watobo 0.9.21 → 0.9.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/CHANGELOG.md +46 -1
- data/bin/nfq_server.rb +0 -9
- data/bin/watobo_gui.rb +3 -13
- data/custom-views/prettify-json.rb +9 -18
- data/icons/watobo.ico +0 -0
- data/icons/watobo.ico.old +0 -0
- data/lib/watobo.rb +10 -19
- data/lib/watobo/adapters.rb +5 -14
- data/lib/watobo/adapters/data_store.rb +50 -59
- data/lib/watobo/adapters/file/file_store.rb +287 -296
- data/lib/watobo/adapters/file/marshal_store.rb +293 -296
- data/lib/watobo/adapters/session_store.rb +5 -14
- data/lib/watobo/ca.rb +1 -10
- data/lib/watobo/config.rb +197 -206
- data/lib/watobo/constants.rb +0 -9
- data/lib/watobo/core.rb +3 -12
- data/lib/watobo/core/active_check.rb +72 -135
- data/lib/watobo/core/active_checks.rb +49 -58
- data/lib/watobo/core/ca.rb +369 -389
- data/lib/watobo/core/cert_store.rb +34 -43
- data/lib/watobo/core/chat.rb +92 -101
- data/lib/watobo/core/chats.rb +271 -280
- data/lib/watobo/core/client_cert_store.rb +106 -35
- data/lib/watobo/core/conversation.rb +48 -57
- data/lib/watobo/core/cookie.rb +23 -32
- data/lib/watobo/core/egress_handlers.rb +98 -0
- data/lib/watobo/core/finding.rb +66 -75
- data/lib/watobo/core/findings.rb +107 -114
- data/lib/watobo/core/forwarding_proxy.rb +13 -22
- data/lib/watobo/core/fuzz_gen.rb +0 -9
- data/lib/watobo/core/intercept_carver.rb +166 -177
- data/lib/watobo/core/intercept_filter.rb +235 -244
- data/lib/watobo/core/interceptor.rb +98 -107
- data/lib/watobo/core/min_class.rb +4 -13
- data/lib/watobo/core/netfilter_queue.rb +170 -179
- data/lib/watobo/core/ott_cache.rb +132 -141
- data/lib/watobo/core/parameter.rb +43 -52
- data/lib/watobo/core/passive_check.rb +103 -102
- data/lib/watobo/core/passive_checks.rb +48 -57
- data/lib/watobo/core/passive_scanner.rb +54 -55
- data/lib/watobo/core/plugin.rb +11 -20
- data/lib/watobo/core/project.rb +3 -9
- data/lib/watobo/core/proxy.rb +43 -52
- data/lib/watobo/core/request.rb +125 -123
- data/lib/watobo/core/response.rb +44 -53
- data/lib/watobo/core/scanner.rb +0 -9
- data/lib/watobo/core/scanner3.rb +405 -414
- data/lib/watobo/core/scope.rb +83 -92
- data/lib/watobo/core/session.rb +1043 -1026
- data/lib/watobo/core/sid_cache.rb +98 -107
- data/lib/watobo/core/subscriber.rb +25 -34
- data/lib/watobo/defaults.rb +21 -30
- data/lib/watobo/external/diff/lcs.rb +0 -9
- data/lib/watobo/external/diff/lcs/array.rb +0 -9
- data/lib/watobo/external/diff/lcs/block.rb +0 -9
- data/lib/watobo/external/diff/lcs/callbacks.rb +0 -9
- data/lib/watobo/external/diff/lcs/change.rb +0 -9
- data/lib/watobo/external/diff/lcs/hunk.rb +0 -9
- data/lib/watobo/external/diff/lcs/ldiff.rb +0 -9
- data/lib/watobo/external/diff/lcs/string.rb +0 -9
- data/lib/watobo/externals.rb +6 -15
- data/lib/watobo/framework.rb +4 -13
- data/lib/watobo/framework/create_project.rb +60 -69
- data/lib/watobo/framework/init.rb +0 -9
- data/lib/watobo/framework/init_modules.rb +0 -9
- data/lib/watobo/framework/license_text.rb +28 -37
- data/lib/watobo/framework/load_chat.rb +13 -22
- data/lib/watobo/gui.rb +132 -123
- data/lib/watobo/gui/about_watobo.rb +0 -9
- data/lib/watobo/gui/browser_preview.rb +0 -9
- data/lib/watobo/gui/certificate_dialog.rb +0 -9
- data/lib/watobo/gui/chat_diff.rb +0 -9
- data/lib/watobo/gui/chatviewer_frame.rb +73 -72
- data/lib/watobo/gui/checkboxtree.rb +0 -9
- data/lib/watobo/gui/checks_policy_frame.rb +0 -9
- data/lib/watobo/gui/client_cert_dialog.rb +96 -87
- data/lib/watobo/gui/confirm_scan_dialog.rb +0 -9
- data/lib/watobo/gui/conversation_table.rb +158 -164
- data/lib/watobo/gui/conversation_table_ctrl.rb +207 -216
- data/lib/watobo/gui/conversation_table_ctrl2.rb +373 -382
- data/lib/watobo/gui/csrf_token_dialog.rb +0 -9
- data/lib/watobo/gui/custom_viewer.rb +374 -383
- data/lib/watobo/gui/dashboard.rb +296 -303
- data/lib/watobo/gui/define_scope_frame.rb +0 -9
- data/lib/watobo/gui/differ_frame.rb +215 -224
- data/lib/watobo/gui/edit_comment.rb +0 -9
- data/lib/watobo/gui/edit_scope_dialog.rb +0 -9
- data/lib/watobo/gui/export_dialog.rb +104 -113
- data/lib/watobo/gui/finding_info.rb +0 -9
- data/lib/watobo/gui/findings_tree.rb +210 -217
- data/lib/watobo/gui/full_scan_dialog.rb +0 -9
- data/lib/watobo/gui/fuzzer_gui.rb +1295 -1313
- data/lib/watobo/gui/fxsave_thread.rb +14 -0
- data/lib/watobo/gui/goto_url_dialog.rb +70 -79
- data/lib/watobo/gui/hex_viewer.rb +0 -9
- data/lib/watobo/gui/html_viewer.rb +287 -296
- data/lib/watobo/gui/intercept_filter_dialog.rb +188 -197
- data/lib/watobo/gui/interceptor_gui.rb +1041 -1051
- data/lib/watobo/gui/interceptor_settings_dialog.rb +0 -9
- data/lib/watobo/gui/json_viewer.rb +287 -0
- data/lib/watobo/gui/list_box.rb +101 -110
- data/lib/watobo/gui/log_file_viewer.rb +32 -41
- data/lib/watobo/gui/log_viewer.rb +83 -88
- data/lib/watobo/gui/login_wizzard.rb +0 -9
- data/lib/watobo/gui/main_window.rb +587 -618
- data/lib/watobo/gui/manual_request_editor.rb +620 -565
- data/lib/watobo/gui/master_pw_dialog.rb +0 -9
- data/lib/watobo/gui/mixins/gui_settings.rb +29 -38
- data/lib/watobo/gui/page_tree.rb +217 -226
- data/lib/watobo/gui/password_policy_dialog.rb +0 -9
- data/lib/watobo/gui/plugin_board.rb +0 -9
- data/lib/watobo/gui/preferences_dialog.rb +0 -9
- data/lib/watobo/gui/progress_window.rb +17 -27
- data/lib/watobo/gui/project_wizzard.rb +0 -9
- data/lib/watobo/gui/proxy_dialog.rb +1 -10
- data/lib/watobo/gui/quick_scan_dialog.rb +0 -9
- data/lib/watobo/gui/request_builder_frame.rb +102 -111
- data/lib/watobo/gui/request_editor.rb +181 -137
- data/lib/watobo/gui/rewrite_filters_dialog.rb +394 -403
- data/lib/watobo/gui/rewrite_rules_dialog.rb +372 -381
- data/lib/watobo/gui/save_chat_dialog.rb +140 -149
- data/lib/watobo/gui/scanner_settings_dialog.rb +0 -9
- data/lib/watobo/gui/select_chat_dialog.rb +0 -9
- data/lib/watobo/gui/session_management_dialog.rb +0 -9
- data/lib/watobo/gui/sites_tree.rb +0 -9
- data/lib/watobo/gui/status_bar.rb +0 -9
- data/lib/watobo/gui/table_editor.rb +0 -9
- data/lib/watobo/gui/tagless_viewer.rb +0 -9
- data/lib/watobo/gui/templates/plugin.rb +0 -9
- data/lib/watobo/gui/templates/plugin2.rb +92 -100
- data/lib/watobo/gui/templates/plugin_base.rb +144 -153
- data/lib/watobo/gui/text_viewer.rb +0 -9
- data/lib/watobo/gui/transcoder_window.rb +0 -9
- data/lib/watobo/gui/utils/gui_utils.rb +0 -9
- data/lib/watobo/gui/utils/init_icons.rb +86 -95
- data/lib/watobo/gui/utils/load_icons.rb +33 -42
- data/lib/watobo/gui/utils/load_plugins.rb +116 -119
- data/lib/watobo/gui/utils/master_password.rb +68 -77
- data/lib/watobo/gui/utils/save_default_settings.rb +113 -122
- data/lib/watobo/gui/utils/save_project_settings.rb +0 -9
- data/lib/watobo/gui/utils/save_proxy_settings.rb +41 -50
- data/lib/watobo/gui/utils/save_scanner_settings.rb +18 -27
- data/lib/watobo/gui/utils/session_history.rb +112 -121
- data/lib/watobo/gui/workspace_dialog.rb +0 -9
- data/lib/watobo/gui/www_auth_dialog.rb +0 -9
- data/lib/watobo/gui/xml_viewer_frame.rb +0 -9
- data/lib/watobo/http.rb +4 -13
- data/lib/watobo/http/cookies/cookies.rb +26 -35
- data/lib/watobo/http/data/data.rb +45 -54
- data/lib/watobo/http/data/json.rb +47 -55
- data/lib/watobo/http/url/url.rb +38 -47
- data/lib/watobo/http/xml/xml.rb +124 -130
- data/lib/watobo/interceptor.rb +3 -12
- data/lib/watobo/interceptor/proxy.rb +742 -739
- data/lib/watobo/interceptor/transparent.rb +22 -24
- data/lib/watobo/mixins.rb +10 -19
- data/lib/watobo/mixins/check_info.rb +27 -36
- data/lib/watobo/mixins/httpparser.rb +613 -637
- data/lib/watobo/mixins/request_parser.rb +88 -97
- data/lib/watobo/mixins/shapers.rb +515 -529
- data/lib/watobo/mixins/transcoders.rb +3 -11
- data/lib/watobo/parser.rb +1 -10
- data/lib/watobo/parser/html.rb +83 -92
- data/lib/watobo/patch_fxruby_setfocus.rb +26 -0
- data/lib/watobo/sockets.rb +3 -12
- data/lib/watobo/sockets/agent.rb +828 -837
- data/lib/watobo/sockets/client_socket.rb +308 -312
- data/lib/watobo/sockets/connection.rb +401 -410
- data/lib/watobo/sockets/http_socket.rb +11 -13
- data/lib/watobo/sockets/ntlm_auth.rb +129 -138
- data/lib/watobo/utils.rb +10 -19
- data/lib/watobo/utils/check_regex.rb +0 -9
- data/lib/watobo/utils/copy_object.rb +0 -9
- data/lib/watobo/utils/crypto.rb +0 -9
- data/lib/watobo/utils/expand_range.rb +23 -32
- data/lib/watobo/utils/export_xml.rb +97 -106
- data/lib/watobo/utils/file_management.rb +9 -11
- data/lib/watobo/utils/hexprint.rb +9 -18
- data/lib/watobo/utils/load_chat.rb +0 -9
- data/lib/watobo/utils/load_icon.rb +0 -9
- data/lib/watobo/utils/ntlm.rb +866 -875
- data/lib/watobo/utils/print_debug.rb +12 -21
- data/lib/watobo/utils/response_builder.rb +90 -99
- data/lib/watobo/utils/response_hash.rb +0 -9
- data/lib/watobo/utils/secure_eval.rb +0 -9
- data/lib/watobo/utils/strings.rb +10 -19
- data/lib/watobo/utils/text2request.rb +0 -9
- data/lib/watobo/utils/url.rb +23 -32
- data/lib/watobo/utils/utf16.rb +11 -20
- data/modules/active/Apache/mod_status.rb +0 -9
- data/modules/active/Apache/multiview.rb +151 -160
- data/modules/active/Flash/crossdomain.rb +0 -9
- data/modules/active/JWT/jwt_oauth2_none.rb +111 -0
- data/modules/active/cq5/cq5_default_selectors.rb +106 -115
- data/modules/active/cq5/cqp_user_enumeration.rb +125 -134
- data/modules/active/directories/dirwalker.rb +0 -9
- data/modules/active/discovery/fileextensions.rb +0 -9
- data/modules/active/discovery/http_methods.rb +0 -9
- data/modules/active/discovery/jsmapfiles.rb +79 -0
- data/modules/active/domino/domino_db.rb +68 -76
- data/modules/active/dotNET/custom_errors.rb +102 -111
- data/modules/active/dotNET/dotnet_files.rb +90 -99
- data/modules/active/fileinclusion/lfi_simple.rb +0 -9
- data/modules/active/jboss/jboss_basic.rb +0 -9
- data/modules/active/sap/business_objects.rb +51 -60
- data/modules/active/sap/its_commands.rb +0 -9
- data/modules/active/sap/its_service_parameter.rb +0 -9
- data/modules/active/sap/its_services.rb +0 -9
- data/modules/active/sap/its_xss.rb +0 -9
- data/modules/active/shell_shock/shell_shock.rb +139 -148
- data/modules/active/siebel/siebel_apps.rb +160 -169
- data/modules/active/sqlinjection/sql_boolean.rb +0 -9
- data/modules/active/sqlinjection/sql_numerical.rb +198 -0
- data/modules/active/sqlinjection/sqli_error.rb +0 -9
- data/modules/active/sqlinjection/sqli_timing.rb +220 -229
- data/modules/active/struts2/default_handler_ognl.rb +106 -115
- data/modules/active/struts2/include_params_ognl.rb +105 -114
- data/modules/active/xml/xml_xxe.rb +112 -123
- data/modules/active/xss/xss_ng.rb +214 -223
- data/modules/active/xss/xss_simple.rb +0 -9
- data/modules/passive/ajax.rb +68 -77
- data/modules/passive/autocomplete.rb +56 -65
- data/modules/passive/cookie_options.rb +0 -9
- data/modules/passive/cookie_xss.rb +0 -9
- data/modules/passive/detect_code.rb +0 -9
- data/modules/passive/detect_fileupload.rb +0 -9
- data/modules/passive/detect_infrastructure.rb +0 -9
- data/modules/passive/detect_one_time_tokens.rb +0 -9
- data/modules/passive/dirindexing.rb +0 -9
- data/modules/passive/disclosure_domino.rb +55 -64
- data/modules/passive/disclosure_emails.rb +0 -9
- data/modules/passive/disclosure_ipaddr.rb +55 -53
- data/modules/passive/filename_as_parameter.rb +0 -9
- data/modules/passive/form_spotter.rb +0 -9
- data/modules/passive/hidden_fields.rb +50 -59
- data/modules/passive/hotspots.rb +0 -9
- data/modules/passive/in_script_parameter.rb +0 -9
- data/modules/passive/json_web_token.rb +93 -0
- data/modules/passive/multiple_server_headers.rb +0 -9
- data/modules/passive/possible_login.rb +0 -9
- data/modules/passive/redirect_url.rb +0 -9
- data/modules/passive/redirectionz.rb +0 -9
- data/modules/passive/sap-headers.rb +56 -65
- data/modules/passive/xss_dom.rb +0 -9
- data/plugins/aem/aem.rb +11 -20
- data/plugins/aem/gui/main.rb +118 -127
- data/plugins/aem/gui/tree_view.rb +171 -180
- data/plugins/aem/lib/agent.rb +130 -138
- data/plugins/aem/lib/dispatcher.rb +45 -51
- data/plugins/aem/lib/engine.rb +177 -186
- data/plugins/catalog/catalog.rb +345 -355
- data/plugins/crawler/crawler.rb +4 -13
- data/plugins/crawler/gui.rb +5 -14
- data/plugins/crawler/gui/auth_frame.rb +270 -279
- data/plugins/crawler/gui/crawler_gui.rb +271 -276
- data/plugins/crawler/gui/general_settings_frame.rb +96 -105
- data/plugins/crawler/gui/hooks_frame.rb +80 -89
- data/plugins/crawler/gui/scope_frame.rb +50 -59
- data/plugins/crawler/gui/settings_tabbook.rb +38 -47
- data/plugins/crawler/gui/status_frame.rb +59 -68
- data/plugins/crawler/lib/bags.rb +18 -27
- data/plugins/crawler/lib/constants.rb +11 -20
- data/plugins/crawler/lib/engine.rb +488 -497
- data/plugins/crawler/lib/grabber.rb +68 -77
- data/plugins/crawler/lib/status.rb +71 -80
- data/plugins/crawler/lib/uri_mp.rb +12 -21
- data/plugins/filefinder/filefinder.rb +326 -333
- data/plugins/sqlmap/bin/test.rb +78 -87
- data/plugins/sqlmap/gui.rb +4 -13
- data/plugins/sqlmap/gui/main.rb +218 -227
- data/plugins/sqlmap/gui/options_frame.rb +97 -106
- data/plugins/sqlmap/lib/sqlmap_ctrl.rb +90 -100
- data/plugins/sqlmap/sqlmap.rb +2 -11
- data/plugins/sslchecker/cli/sslchecker_cli.rb +0 -9
- data/plugins/sslchecker/gui/cipher_table.rb +246 -254
- data/plugins/sslchecker/gui/gui.rb +258 -264
- data/plugins/sslchecker/gui/sslchecker.rb +4 -13
- data/plugins/sslchecker/lib/check.rb +127 -133
- data/plugins/wshell/gui/main.rb +119 -117
- data/plugins/wshell/lib/core.rb +38 -88
- data/plugins/wshell/wshell.rb +11 -20
- metadata +170 -164
|
@@ -1,12 +1,3 @@
|
|
|
1
|
-
#.
|
|
2
|
-
# dirwalker.rb
|
|
3
|
-
#.
|
|
4
|
-
# Copyright 2014 by siberas, http://www.siberas.de
|
|
5
|
-
# This file is part of WATOBO (Web Application Tool Box) http://watobo.sourceforge.com
|
|
6
|
-
# WATOBO is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation version 2 of the License.
|
|
7
|
-
# WATOBO is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
|
8
|
-
# You should have received a copy of the GNU General Public License along with WATOBO; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
9
|
-
|
|
10
1
|
# @private
|
|
11
2
|
module Watobo#:nodoc: all
|
|
12
3
|
module Modules
|
|
@@ -1,12 +1,3 @@
|
|
|
1
|
-
#.
|
|
2
|
-
# fileextensions.rb
|
|
3
|
-
#.
|
|
4
|
-
# Copyright 2014 by siberas, http://www.siberas.de
|
|
5
|
-
# This file is part of WATOBO (Web Application Tool Box) http://watobo.sourceforge.com
|
|
6
|
-
# WATOBO is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation version 2 of the License.
|
|
7
|
-
# WATOBO is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
|
8
|
-
# You should have received a copy of the GNU General Public License along with WATOBO; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
9
|
-
|
|
10
1
|
# @private
|
|
11
2
|
module Watobo#:nodoc: all
|
|
12
3
|
module Modules
|
|
@@ -1,12 +1,3 @@
|
|
|
1
|
-
#.
|
|
2
|
-
# http_methods.rb
|
|
3
|
-
#.
|
|
4
|
-
# Copyright 2014 by siberas, http://www.siberas.de
|
|
5
|
-
# This file is part of WATOBO (Web Application Tool Box) http://watobo.sourceforge.com
|
|
6
|
-
# WATOBO is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation version 2 of the License.
|
|
7
|
-
# WATOBO is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
|
8
|
-
# You should have received a copy of the GNU General Public License along with WATOBO; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
9
|
-
|
|
10
1
|
# @private
|
|
11
2
|
module Watobo#:nodoc: all
|
|
12
3
|
module Modules
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# @private
|
|
2
|
+
module Watobo #:nodoc: all
|
|
3
|
+
module Modules
|
|
4
|
+
module Active
|
|
5
|
+
module Discovery
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class Jsmapfiles < Watobo::ActiveCheck
|
|
9
|
+
|
|
10
|
+
@info.update(
|
|
11
|
+
:check_name => 'JavaScript Map Files', # name of check which briefly describes functionality, will be used for tree and progress views
|
|
12
|
+
:description => "Checks for javascript map files", # description of checkfunction
|
|
13
|
+
:author => "Andreas Schmidt", # author of check
|
|
14
|
+
:version => "0.9" # check version
|
|
15
|
+
)
|
|
16
|
+
|
|
17
|
+
@finding.update(
|
|
18
|
+
:threat => 'Temporary- or backup files may contain sensitive information, e.g. source-code or username/password.', # thread of vulnerability, e.g. loss of information
|
|
19
|
+
:class => "JS Map File", # vulnerability class, e.g. Stored XSS, SQL-Injection, ...
|
|
20
|
+
:type => FINDING_TYPE_INFO # FINDING_TYPE_HINT, FINDING_TYPE_INFO, FINDING_TYPE_VULN
|
|
21
|
+
)
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def initialize(session_name=nil, prefs={})
|
|
25
|
+
# @project = project
|
|
26
|
+
super(session_name, prefs)
|
|
27
|
+
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def reset()
|
|
31
|
+
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def generateChecks(chat)
|
|
35
|
+
|
|
36
|
+
begin
|
|
37
|
+
file = chat.request.file
|
|
38
|
+
|
|
39
|
+
return nil unless file =~ /\.js$/ and chat.response.content_type =~ /javascript/i
|
|
40
|
+
|
|
41
|
+
checker = proc {
|
|
42
|
+
test_request = nil
|
|
43
|
+
test_response = nil
|
|
44
|
+
|
|
45
|
+
new_file = file + '.map'
|
|
46
|
+
test_request = chat.copyRequest
|
|
47
|
+
|
|
48
|
+
test_request.replaceFileExt(new_file)
|
|
49
|
+
|
|
50
|
+
status, test_request, test_response = fileExists?(test_request, :default => true)
|
|
51
|
+
|
|
52
|
+
if status == true then
|
|
53
|
+
addFinding(test_request, test_response,
|
|
54
|
+
:check_pattern => "#{new_file}",
|
|
55
|
+
:test_item => file,
|
|
56
|
+
:proof_pattern => "#{test_response.status}",
|
|
57
|
+
:chat => chat,
|
|
58
|
+
:title => "[ #{test_response.status_code} ] - #{new_file}"
|
|
59
|
+
#:debug => true
|
|
60
|
+
)
|
|
61
|
+
end
|
|
62
|
+
[test_request, test_response]
|
|
63
|
+
}
|
|
64
|
+
yield checker
|
|
65
|
+
|
|
66
|
+
rescue => bang
|
|
67
|
+
|
|
68
|
+
puts "ERROR!! #{Module.nesting[0].name} "
|
|
69
|
+
puts "chatid: #{chat.id}"
|
|
70
|
+
puts bang
|
|
71
|
+
puts
|
|
72
|
+
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
end
|
|
@@ -1,52 +1,43 @@
|
|
|
1
|
-
#.
|
|
2
|
-
# domino_db.rb
|
|
3
|
-
#.
|
|
4
|
-
# Copyright 2014 by siberas, http://www.siberas.de
|
|
5
|
-
# This file is part of WATOBO (Web Application Tool Box) http://watobo.sourceforge.com
|
|
6
|
-
# WATOBO is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation version 2 of the License.
|
|
7
|
-
# WATOBO is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
|
8
|
-
# You should have received a copy of the GNU General Public License along with WATOBO; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
9
|
-
|
|
10
1
|
require 'digest/md5'
|
|
11
2
|
require 'digest/sha1'
|
|
12
3
|
|
|
13
4
|
# @private
|
|
14
|
-
module Watobo#:nodoc: all
|
|
5
|
+
module Watobo #:nodoc: all
|
|
15
6
|
module Modules
|
|
16
7
|
module Active
|
|
17
8
|
module Domino
|
|
18
|
-
|
|
19
|
-
|
|
9
|
+
|
|
10
|
+
|
|
20
11
|
class Domino_db < Watobo::ActiveCheck
|
|
21
12
|
@info.update(
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
13
|
+
:check_name => 'Lotus Domino DB Enumeration', # name of check which briefly describes functionality, will be used for tree and progress views
|
|
14
|
+
:description => "Enumeration of well known Domino DBs.", # description of checkfunction
|
|
15
|
+
:author => "Andreas Schmidt", # author of check
|
|
16
|
+
:check_group => AC_GROUP_DOMINO,
|
|
17
|
+
:version => "1.0" # check version
|
|
18
|
+
)
|
|
19
|
+
|
|
20
|
+
@finding.update(
|
|
21
|
+
:threat => 'Information Disclosure and/or modifying of databases.', # thread of vulnerability, e.g. loss of information
|
|
22
|
+
:class => "Lotus Domino: Default Database", # vulnerability class, e.g. Stored XSS, SQL-Injection, ...
|
|
23
|
+
:type => FINDING_TYPE_HINT # FINDING_TYPE_HINT, FINDING_TYPE_INFO, FINDING_TYPE_VULN
|
|
24
|
+
)
|
|
25
|
+
|
|
35
26
|
def initialize(project, prefs={})
|
|
36
27
|
super(project, prefs)
|
|
37
|
-
|
|
28
|
+
|
|
38
29
|
@domino_dbs = []
|
|
39
|
-
|
|
40
|
-
filename = "domino_db.lst"
|
|
41
|
-
path = File.dirname(__FILE__)
|
|
30
|
+
|
|
31
|
+
filename = "domino_db.lst"
|
|
32
|
+
path = File.dirname(__FILE__)
|
|
42
33
|
db_file = File.join(path, filename)
|
|
43
|
-
|
|
34
|
+
|
|
44
35
|
begin
|
|
45
|
-
fh = open(db_file,"r")
|
|
36
|
+
fh = open(db_file, "r")
|
|
46
37
|
fh.each_line do |dbname|
|
|
47
38
|
@domino_dbs.push dbname.strip
|
|
48
39
|
end
|
|
49
|
-
|
|
40
|
+
# puts "* #{@domino_dbs.length} Lotus Domino DB Names loaded"
|
|
50
41
|
rescue => bang
|
|
51
42
|
puts "!!! ERROR: Problems import Domino DB List"
|
|
52
43
|
puts "File:"
|
|
@@ -54,57 +45,58 @@ module Watobo#:nodoc: all
|
|
|
54
45
|
puts bang
|
|
55
46
|
end
|
|
56
47
|
end
|
|
57
|
-
|
|
58
|
-
def generateChecks(chat)
|
|
59
|
-
begin
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
48
|
+
|
|
49
|
+
def generateChecks(chat)
|
|
50
|
+
begin
|
|
51
|
+
# if chat.request.url.to_s =~ /(.*)\/\w*\.nsf/ then
|
|
52
|
+
@domino_dbs.each do |db|
|
|
53
|
+
checker = proc {
|
|
54
|
+
test_request = nil
|
|
55
|
+
test_response = nil
|
|
56
|
+
test = chat.copyRequest
|
|
57
|
+
|
|
58
|
+
test.replaceFileExt db
|
|
59
|
+
|
|
60
|
+
#test_request,test_response = doRequest(test,:default => true)
|
|
61
|
+
#if test_response.status =~ /ok/i then
|
|
62
|
+
fexist, test_request, test_response = fileExists?(test, :default => true)
|
|
63
|
+
|
|
64
|
+
if fexist and test_response.status =~ /200/
|
|
65
|
+
# test_chat = Chat.new(test, test_response, chat.id)
|
|
66
|
+
if test_response.join =~ /(names\.nsf\?Login)/ # if default db found, check for content
|
|
67
|
+
addFinding(test_request, test_response,
|
|
68
|
+
:test_item => chat.request.url.to_s,
|
|
69
|
+
:check_pattern => "#{db}",
|
|
70
|
+
:proof_pattern => "#{test_response.status}",
|
|
71
|
+
:chat => chat,
|
|
72
|
+
:title => db
|
|
73
|
+
)
|
|
74
|
+
else
|
|
75
|
+
addFinding(test_request, test_response,
|
|
76
|
+
:check_pattern => "#{db}",
|
|
77
|
+
:proof_pattern => "#{test_response.status}",
|
|
78
|
+
:test_item => chat.request.url.to_s,
|
|
79
|
+
:class => "Lotus Domino: Unprotected Default DB",
|
|
80
|
+
:type => FINDING_TYPE_VULN,
|
|
81
|
+
:chat => chat,
|
|
82
|
+
:rating => VULN_RATING_HIGH,
|
|
83
|
+
:title => db
|
|
84
|
+
)
|
|
85
|
+
[test_request, test_response]
|
|
95
86
|
end
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
87
|
+
end
|
|
88
|
+
}
|
|
89
|
+
yield checker
|
|
90
|
+
end
|
|
91
|
+
#end
|
|
100
92
|
rescue => bang
|
|
101
93
|
puts bang
|
|
102
94
|
puts "ERROR!! #{Module.nesting[0].name}"
|
|
103
95
|
raise
|
|
104
|
-
|
|
96
|
+
|
|
105
97
|
end
|
|
106
98
|
end
|
|
107
|
-
|
|
99
|
+
|
|
108
100
|
end
|
|
109
101
|
# --> eo namespace
|
|
110
102
|
end
|
|
@@ -1,112 +1,103 @@
|
|
|
1
|
-
#.
|
|
2
|
-
# custom_errors.rb
|
|
3
|
-
#.
|
|
4
|
-
# Copyright 2014 by siberas, http://www.siberas.de
|
|
5
|
-
# This file is part of WATOBO (Web Application Tool Box) http://watobo.sourceforge.com
|
|
6
|
-
# WATOBO is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation version 2 of the License.
|
|
7
|
-
# WATOBO is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
|
8
|
-
# You should have received a copy of the GNU General Public License along with WATOBO; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
9
|
-
|
|
10
1
|
# @private
|
|
11
|
-
module Watobo#:nodoc: all
|
|
12
|
-
module Modules
|
|
13
|
-
module Active
|
|
14
|
-
module Dotnet
|
|
15
|
-
#class Dir_indexing < Watobo::Mixin::Session
|
|
16
|
-
class Custom_errors < Watobo::ActiveCheck
|
|
17
|
-
@@tested_directories = Hash.new
|
|
18
|
-
|
|
19
|
-
@info.update(
|
|
20
|
-
:check_name => '.NET Custom Error', # name of check which briefly describes functionality, will be used for tree and progress views
|
|
21
|
-
:description => "This module checks if custom errors messages are used and Stack-Tracing is enabled.", # description of checkfunction
|
|
22
|
-
:author => "Andreas Schmidt", # author of check
|
|
23
|
-
:version => "1.0", # check version
|
|
24
|
-
:check_group => ".NET"
|
|
25
|
-
)
|
|
26
|
-
|
|
27
|
-
@finding.update(
|
|
28
|
-
:threat => 'Information Disclosure. Internal error messages are exposed to end users.', # thread of vulnerability, e.g. loss of information
|
|
29
|
-
:class => ".NET: Custom Errors", # vulnerability class, e.g. Stored XSS, SQL-Injection, ...
|
|
30
|
-
:type => FINDING_TYPE_VULN, # FINDING_TYPE_HINT, FINDING_TYPE_INFO, FINDING_TYPE_VULN
|
|
31
|
-
:rating => VULN_RATING_INFO
|
|
32
|
-
)
|
|
33
|
-
|
|
34
|
-
def initialize(project, prefs={})
|
|
35
|
-
super(project, prefs)
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
def generateChecks(chat)
|
|
42
|
-
|
|
43
|
-
begin
|
|
44
|
-
|
|
45
|
-
if chat.request.url.to_s =~ /\.aspx/ then
|
|
46
|
-
|
|
47
|
-
checker = proc {
|
|
48
|
-
begin
|
|
49
|
-
test_request = nil
|
|
50
|
-
test_response = nil
|
|
51
|
-
|
|
52
|
-
test = chat.copyRequest
|
|
53
|
-
test.set_method("POST")
|
|
54
|
-
|
|
55
|
-
test.set_content_type("application/x-www-form-urlencoded")
|
|
56
|
-
test.set_content_length("0")
|
|
57
|
-
test.setData "__VIEWSTATE=watobo"
|
|
58
|
-
|
|
59
|
-
status, test_request, test_response = fileExists?(test)
|
|
60
|
-
|
|
61
|
-
if test_response.has_body? and test_response.body =~ /Server Error in/
|
|
62
|
-
|
|
63
|
-
puts ".NET Custom Error >> #{test.url.to_s}"
|
|
64
|
-
|
|
65
|
-
addFinding( test_request, test_response,
|
|
66
|
-
:test_item => "__VIEWSTATE",
|
|
67
|
-
:proof_pattern => Regexp.quote("Server Error in"),
|
|
68
|
-
:check_pattern => Regexp.quote("__VIEWSTATE"),
|
|
69
|
-
:chat => chat,
|
|
70
|
-
:threat => "Information Disclosure: Error messages may disclose potentially sensitive information about the internal implementation of the website.",
|
|
71
|
-
:title => "[Server Error]"
|
|
72
|
-
)
|
|
73
|
-
|
|
74
|
-
trace_pattern = "customErrors mode=.*RemoteOnly"
|
|
75
|
-
if test_response.body =~ /#{trace_pattern}/i
|
|
76
|
-
#puts "STACK-TRACE!!!"
|
|
77
|
-
addFinding( test_request, test_response,
|
|
78
|
-
:test_item => "__VIEWSTATE",
|
|
79
|
-
:proof_pattern => trace_pattern,
|
|
80
|
-
:check_pattern => Regexp.quote("__VIEWSTATE"),
|
|
81
|
-
:chat => chat,
|
|
82
|
-
:threat => "Information Disclosure: A Stack-Trace may disclose potentially sensitive information about the internal implementation of the website.",
|
|
83
|
-
:title => "[Stack-Trace]",
|
|
84
|
-
:class => ".NET: Stack-Trace"
|
|
85
|
-
)
|
|
86
|
-
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
end
|
|
90
|
-
|
|
91
|
-
[ test_request, test_response ]
|
|
92
|
-
|
|
93
|
-
rescue => bang
|
|
94
|
-
puts bang
|
|
95
|
-
puts bang.backtrace if $DEBUG
|
|
96
|
-
end
|
|
97
|
-
[ nil, nil ]
|
|
98
|
-
|
|
99
|
-
}
|
|
100
|
-
yield checker
|
|
101
|
-
end
|
|
102
|
-
rescue => bang
|
|
103
|
-
puts "!error in module #{Module.nesting[0].name}"
|
|
104
|
-
puts bang
|
|
105
|
-
end
|
|
106
|
-
end
|
|
107
|
-
|
|
108
|
-
end
|
|
109
|
-
end
|
|
110
|
-
end
|
|
111
|
-
end
|
|
112
|
-
end
|
|
2
|
+
module Watobo#:nodoc: all
|
|
3
|
+
module Modules
|
|
4
|
+
module Active
|
|
5
|
+
module Dotnet
|
|
6
|
+
#class Dir_indexing < Watobo::Mixin::Session
|
|
7
|
+
class Custom_errors < Watobo::ActiveCheck
|
|
8
|
+
@@tested_directories = Hash.new
|
|
9
|
+
|
|
10
|
+
@info.update(
|
|
11
|
+
:check_name => '.NET Custom Error', # name of check which briefly describes functionality, will be used for tree and progress views
|
|
12
|
+
:description => "This module checks if custom errors messages are used and Stack-Tracing is enabled.", # description of checkfunction
|
|
13
|
+
:author => "Andreas Schmidt", # author of check
|
|
14
|
+
:version => "1.0", # check version
|
|
15
|
+
:check_group => ".NET"
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
@finding.update(
|
|
19
|
+
:threat => 'Information Disclosure. Internal error messages are exposed to end users.', # thread of vulnerability, e.g. loss of information
|
|
20
|
+
:class => ".NET: Custom Errors", # vulnerability class, e.g. Stored XSS, SQL-Injection, ...
|
|
21
|
+
:type => FINDING_TYPE_VULN, # FINDING_TYPE_HINT, FINDING_TYPE_INFO, FINDING_TYPE_VULN
|
|
22
|
+
:rating => VULN_RATING_INFO
|
|
23
|
+
)
|
|
24
|
+
|
|
25
|
+
def initialize(project, prefs={})
|
|
26
|
+
super(project, prefs)
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def generateChecks(chat)
|
|
33
|
+
|
|
34
|
+
begin
|
|
35
|
+
|
|
36
|
+
if chat.request.url.to_s =~ /\.aspx/ then
|
|
37
|
+
|
|
38
|
+
checker = proc {
|
|
39
|
+
begin
|
|
40
|
+
test_request = nil
|
|
41
|
+
test_response = nil
|
|
42
|
+
|
|
43
|
+
test = chat.copyRequest
|
|
44
|
+
test.set_method("POST")
|
|
45
|
+
|
|
46
|
+
test.set_content_type("application/x-www-form-urlencoded")
|
|
47
|
+
test.set_content_length("0")
|
|
48
|
+
test.setData "__VIEWSTATE=watobo"
|
|
49
|
+
|
|
50
|
+
status, test_request, test_response = fileExists?(test)
|
|
51
|
+
|
|
52
|
+
if test_response.has_body? and test_response.body =~ /Server Error in/
|
|
53
|
+
|
|
54
|
+
puts ".NET Custom Error >> #{test.url.to_s}"
|
|
55
|
+
|
|
56
|
+
addFinding( test_request, test_response,
|
|
57
|
+
:test_item => "__VIEWSTATE",
|
|
58
|
+
:proof_pattern => Regexp.quote("Server Error in"),
|
|
59
|
+
:check_pattern => Regexp.quote("__VIEWSTATE"),
|
|
60
|
+
:chat => chat,
|
|
61
|
+
:threat => "Information Disclosure: Error messages may disclose potentially sensitive information about the internal implementation of the website.",
|
|
62
|
+
:title => "[Server Error]"
|
|
63
|
+
)
|
|
64
|
+
|
|
65
|
+
trace_pattern = "customErrors mode=.*RemoteOnly"
|
|
66
|
+
if test_response.body =~ /#{trace_pattern}/i
|
|
67
|
+
#puts "STACK-TRACE!!!"
|
|
68
|
+
addFinding( test_request, test_response,
|
|
69
|
+
:test_item => "__VIEWSTATE",
|
|
70
|
+
:proof_pattern => trace_pattern,
|
|
71
|
+
:check_pattern => Regexp.quote("__VIEWSTATE"),
|
|
72
|
+
:chat => chat,
|
|
73
|
+
:threat => "Information Disclosure: A Stack-Trace may disclose potentially sensitive information about the internal implementation of the website.",
|
|
74
|
+
:title => "[Stack-Trace]",
|
|
75
|
+
:class => ".NET: Stack-Trace"
|
|
76
|
+
)
|
|
77
|
+
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
[ test_request, test_response ]
|
|
83
|
+
|
|
84
|
+
rescue => bang
|
|
85
|
+
puts bang
|
|
86
|
+
puts bang.backtrace if $DEBUG
|
|
87
|
+
end
|
|
88
|
+
[ nil, nil ]
|
|
89
|
+
|
|
90
|
+
}
|
|
91
|
+
yield checker
|
|
92
|
+
end
|
|
93
|
+
rescue => bang
|
|
94
|
+
puts "!error in module #{Module.nesting[0].name}"
|
|
95
|
+
puts bang
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
end
|