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
data/modules/passive/ajax.rb
CHANGED
|
@@ -1,79 +1,70 @@
|
|
|
1
|
-
|
|
2
|
-
# ajax.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
|
|
1
|
+
require 'cgi'
|
|
9
2
|
|
|
10
|
-
require 'cgi'
|
|
11
|
-
|
|
12
3
|
# @private
|
|
13
|
-
module Watobo#:nodoc: all
|
|
14
|
-
module Modules
|
|
15
|
-
module Passive
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
class Ajax < Watobo::PassiveCheck
|
|
19
|
-
|
|
20
|
-
def initialize(project)
|
|
21
|
-
@project = project
|
|
22
|
-
super(project)
|
|
23
|
-
|
|
24
|
-
@info.update(
|
|
25
|
-
:check_name => 'Ajax', # name of check which briefly describes functionality, will be used for tree and progress views
|
|
26
|
-
:description => "Spots Ajax Frameworks like jQuery.", # description of checkfunction
|
|
27
|
-
:author => "Andreas Schmidt", # author of check
|
|
28
|
-
:version => "1.1" # check version
|
|
29
|
-
)
|
|
30
|
-
|
|
31
|
-
@finding.update(
|
|
32
|
-
:threat => 'Framework may contain vulnerabilities.', # thread of vulnerability, e.g. loss of information
|
|
33
|
-
:class => "Ajax Framework", # vulnerability class, e.g. Stored XSS, SQL-Injection, ...
|
|
34
|
-
:type => FINDING_TYPE_INFO # FINDING_TYPE_HINT, FINDING_TYPE_INFO, FINDING_TYPE_VULN
|
|
35
|
-
)
|
|
36
|
-
|
|
37
|
-
@fw_patterns = []
|
|
38
|
-
@fw_patterns << { :name => 'jQuery', :pattern => 'jQuery v([0-9\.]*) .*jquery.(com|org)'}
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
def showError(chatid, message)
|
|
42
|
-
puts "!!! Error #{Module.nesting[0].name}"
|
|
43
|
-
puts "Chat: [#{chatid}]"
|
|
44
|
-
puts message
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
def do_test(chat)
|
|
48
|
-
begin
|
|
49
|
-
return false if chat.response.nil?
|
|
50
|
-
return false unless chat.response.has_body?
|
|
51
|
-
return true unless chat.response.content_type =~ /(text|script)/
|
|
52
|
-
|
|
53
|
-
@fw_patterns.each do |pattern|
|
|
54
|
-
#body = chat.response.body.unpack("C*").pack("C*")
|
|
55
|
-
body = chat.response.body_encoded
|
|
56
|
-
|
|
57
|
-
if body =~ /#{pattern[:pattern]}/i then
|
|
58
|
-
version = $1.strip
|
|
59
|
-
addFinding(
|
|
60
|
-
#:check_pattern => "#{pattern[:pattern]}",
|
|
61
|
-
:proof_pattern => "#{pattern[:pattern]}",
|
|
62
|
-
:chat=>chat,
|
|
63
|
-
:title =>"[ #{pattern[:name]} #{version} ] - #{chat.request.path}",
|
|
64
|
-
)
|
|
65
|
-
|
|
66
|
-
end
|
|
67
|
-
end
|
|
68
|
-
rescue => bang
|
|
69
|
-
# raise
|
|
70
|
-
puts bang
|
|
71
|
-
puts bang.backtrace
|
|
72
|
-
showError(chat.id, bang)
|
|
73
|
-
end
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
end
|
|
77
|
-
end
|
|
78
|
-
end
|
|
79
|
-
end
|
|
4
|
+
module Watobo#:nodoc: all
|
|
5
|
+
module Modules
|
|
6
|
+
module Passive
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class Ajax < Watobo::PassiveCheck
|
|
10
|
+
|
|
11
|
+
def initialize(project)
|
|
12
|
+
@project = project
|
|
13
|
+
super(project)
|
|
14
|
+
|
|
15
|
+
@info.update(
|
|
16
|
+
:check_name => 'Ajax', # name of check which briefly describes functionality, will be used for tree and progress views
|
|
17
|
+
:description => "Spots Ajax Frameworks like jQuery.", # description of checkfunction
|
|
18
|
+
:author => "Andreas Schmidt", # author of check
|
|
19
|
+
:version => "1.1" # check version
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
@finding.update(
|
|
23
|
+
:threat => 'Framework may contain vulnerabilities.', # thread of vulnerability, e.g. loss of information
|
|
24
|
+
:class => "Ajax Framework", # vulnerability class, e.g. Stored XSS, SQL-Injection, ...
|
|
25
|
+
:type => FINDING_TYPE_INFO # FINDING_TYPE_HINT, FINDING_TYPE_INFO, FINDING_TYPE_VULN
|
|
26
|
+
)
|
|
27
|
+
|
|
28
|
+
@fw_patterns = []
|
|
29
|
+
@fw_patterns << { :name => 'jQuery', :pattern => 'jQuery v([0-9\.]*) .*jquery.(com|org)'}
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def showError(chatid, message)
|
|
33
|
+
puts "!!! Error #{Module.nesting[0].name}"
|
|
34
|
+
puts "Chat: [#{chatid}]"
|
|
35
|
+
puts message
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def do_test(chat)
|
|
39
|
+
begin
|
|
40
|
+
return false if chat.response.nil?
|
|
41
|
+
return false unless chat.response.has_body?
|
|
42
|
+
return true unless chat.response.content_type =~ /(text|script)/
|
|
43
|
+
|
|
44
|
+
@fw_patterns.each do |pattern|
|
|
45
|
+
#body = chat.response.body.unpack("C*").pack("C*")
|
|
46
|
+
body = chat.response.body_encoded
|
|
47
|
+
|
|
48
|
+
if body =~ /#{pattern[:pattern]}/i then
|
|
49
|
+
version = $1.strip
|
|
50
|
+
addFinding(
|
|
51
|
+
#:check_pattern => "#{pattern[:pattern]}",
|
|
52
|
+
:proof_pattern => "#{pattern[:pattern]}",
|
|
53
|
+
:chat=>chat,
|
|
54
|
+
:title =>"[ #{pattern[:name]} #{version} ] - #{chat.request.path}",
|
|
55
|
+
)
|
|
56
|
+
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
rescue => bang
|
|
60
|
+
# raise
|
|
61
|
+
puts bang
|
|
62
|
+
puts bang.backtrace
|
|
63
|
+
showError(chat.id, bang)
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
end
|
|
@@ -1,66 +1,57 @@
|
|
|
1
|
-
#.
|
|
2
|
-
# autocomplete.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 Passive
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
class Autocomplete < Watobo::PassiveCheck
|
|
17
|
-
def initialize(project)
|
|
18
|
-
@project = project
|
|
19
|
-
super(project)
|
|
20
|
-
|
|
21
|
-
@info.update(
|
|
22
|
-
:check_name => 'Password AutoComplete', # name of check which briefly describes functionality, will be used for tree and progress views
|
|
23
|
-
:description => "Checks Password Fields For AutoCompletion", # description of checkfunction
|
|
24
|
-
:author => "Andreas Schmidt", # author of check
|
|
25
|
-
:version => "0.9" # check version
|
|
26
|
-
)
|
|
27
|
-
|
|
28
|
-
@finding.update(
|
|
29
|
-
:threat => 'Password values may be stored on the local filesystem.', # thread of vulnerability, e.g. loss of information
|
|
30
|
-
:class => "Password Autocompletion", # vulnerability class, e.g. Stored XSS, SQL-Injection, ...
|
|
31
|
-
:type => FINDING_TYPE_VULN, # FINDING_TYPE_HINT, FINDING_TYPE_INFO, FINDING_TYPE_VULN
|
|
32
|
-
:rating => VULN_RATING_LOW,
|
|
33
|
-
:measure => "The form field should have an attribute autocomplete=\"off\""
|
|
34
|
-
)
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
def do_test(chat)
|
|
38
|
-
begin
|
|
39
|
-
|
|
40
|
-
if chat.response.respond_to? :input_fields
|
|
41
|
-
chat.response.input_fields do |f|
|
|
42
|
-
|
|
43
|
-
ac = f.autocomplete.nil? ? "" : f.autocomplete
|
|
44
|
-
|
|
45
|
-
if f.type =~ /password/i and ( ac =~ /off/i or ac.empty? )
|
|
46
|
-
addFinding(
|
|
47
|
-
:proof_pattern => "input[^>]*type=[^>=]*password.*>{1}",
|
|
48
|
-
:title => "#{chat.request.file}",
|
|
49
|
-
:chat => chat
|
|
50
|
-
)
|
|
51
|
-
end
|
|
52
|
-
end
|
|
53
|
-
end
|
|
54
|
-
rescue => bang
|
|
55
|
-
# raise
|
|
56
|
-
puts "ERROR!! #{Module.nesting[0].name}"
|
|
57
|
-
puts bang
|
|
58
|
-
puts bang.backtrace if $DEBUG
|
|
59
|
-
end
|
|
60
|
-
return false
|
|
61
|
-
end
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
end
|
|
65
|
-
end
|
|
66
|
-
end
|
|
2
|
+
module Watobo#:nodoc: all
|
|
3
|
+
module Modules
|
|
4
|
+
module Passive
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class Autocomplete < Watobo::PassiveCheck
|
|
8
|
+
def initialize(project)
|
|
9
|
+
@project = project
|
|
10
|
+
super(project)
|
|
11
|
+
|
|
12
|
+
@info.update(
|
|
13
|
+
:check_name => 'Password AutoComplete', # name of check which briefly describes functionality, will be used for tree and progress views
|
|
14
|
+
:description => "Checks Password Fields For AutoCompletion", # description of checkfunction
|
|
15
|
+
:author => "Andreas Schmidt", # author of check
|
|
16
|
+
:version => "0.9" # check version
|
|
17
|
+
)
|
|
18
|
+
|
|
19
|
+
@finding.update(
|
|
20
|
+
:threat => 'Password values may be stored on the local filesystem.', # thread of vulnerability, e.g. loss of information
|
|
21
|
+
:class => "Password Autocompletion", # vulnerability class, e.g. Stored XSS, SQL-Injection, ...
|
|
22
|
+
:type => FINDING_TYPE_VULN, # FINDING_TYPE_HINT, FINDING_TYPE_INFO, FINDING_TYPE_VULN
|
|
23
|
+
:rating => VULN_RATING_LOW,
|
|
24
|
+
:measure => "The form field should have an attribute autocomplete=\"off\""
|
|
25
|
+
)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def do_test(chat)
|
|
29
|
+
begin
|
|
30
|
+
|
|
31
|
+
if chat.response.respond_to? :input_fields
|
|
32
|
+
chat.response.input_fields do |f|
|
|
33
|
+
|
|
34
|
+
ac = f.autocomplete.nil? ? "" : f.autocomplete
|
|
35
|
+
|
|
36
|
+
if f.type =~ /password/i and ( ac =~ /off/i or ac.empty? )
|
|
37
|
+
addFinding(
|
|
38
|
+
:proof_pattern => "input[^>]*type=[^>=]*password.*>{1}",
|
|
39
|
+
:title => "#{chat.request.file}",
|
|
40
|
+
:chat => chat
|
|
41
|
+
)
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
rescue => bang
|
|
46
|
+
# raise
|
|
47
|
+
puts "ERROR!! #{Module.nesting[0].name}"
|
|
48
|
+
puts bang
|
|
49
|
+
puts bang.backtrace if $DEBUG
|
|
50
|
+
end
|
|
51
|
+
return false
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
@@ -1,12 +1,3 @@
|
|
|
1
|
-
#.
|
|
2
|
-
# cookie_options.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
|
# .
|
|
11
2
|
# cookie_options.rb
|
|
12
3
|
#
|
|
@@ -1,12 +1,3 @@
|
|
|
1
|
-
#.
|
|
2
|
-
# cookie_xss.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
|
|
|
11
2
|
# @private
|
|
12
3
|
module Watobo#:nodoc: all
|
|
@@ -1,12 +1,3 @@
|
|
|
1
|
-
#.
|
|
2
|
-
# detect_code.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
|
-
# detect_fileupload.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
|
-
# detect_infrastructure.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
|
-
# detect_one_time_tokens.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
|
-
# dirindexing.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
|
|
|
11
2
|
# @private
|
|
12
3
|
module Watobo#:nodoc: all
|
|
@@ -1,70 +1,61 @@
|
|
|
1
|
-
#.
|
|
2
|
-
# disclosure_domino.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 Passive
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
class Disclosure_domino < Watobo::PassiveCheck
|
|
17
|
-
|
|
18
|
-
def initialize(project)
|
|
19
|
-
@project = project
|
|
20
|
-
super(project)
|
|
21
|
-
|
|
22
|
-
@info.update(
|
|
23
|
-
:check_name => 'Domino DB name disclosure.', # name of check which briefly describes functionality, will be used for tree and progress views
|
|
24
|
-
:description => "Identifies Domino DB names.", # description of checkfunction
|
|
25
|
-
:author => "Andreas Schmidt", # author of check
|
|
26
|
-
:version => "1.0" # check version
|
|
27
|
-
)
|
|
28
|
-
|
|
29
|
-
@finding.update(
|
|
30
|
-
:threat => 'Unintended disclosure of Domino DB name can lead to data breach.', # thread of vulnerability, e.g. loss of information
|
|
31
|
-
:class => "Domino DB Names", # vulnerability class, e.g. Stored XSS, SQL-Injection, ...
|
|
32
|
-
:type => FINDING_TYPE_INFO # FINDING_TYPE_HINT, FINDING_TYPE_INFO, FINDING_TYPE_VULN
|
|
33
|
-
)
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
@pattern = '([a-zA-Z\/\-0-9\.:]+\.nsf)'
|
|
37
|
-
@dbs = []
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
def do_test(chat)
|
|
41
|
-
begin
|
|
2
|
+
module Watobo#:nodoc: all
|
|
3
|
+
module Modules
|
|
4
|
+
module Passive
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class Disclosure_domino < Watobo::PassiveCheck
|
|
8
|
+
|
|
9
|
+
def initialize(project)
|
|
10
|
+
@project = project
|
|
11
|
+
super(project)
|
|
12
|
+
|
|
13
|
+
@info.update(
|
|
14
|
+
:check_name => 'Domino DB name disclosure.', # name of check which briefly describes functionality, will be used for tree and progress views
|
|
15
|
+
:description => "Identifies Domino DB names.", # description of checkfunction
|
|
16
|
+
:author => "Andreas Schmidt", # author of check
|
|
17
|
+
:version => "1.0" # check version
|
|
18
|
+
)
|
|
19
|
+
|
|
20
|
+
@finding.update(
|
|
21
|
+
:threat => 'Unintended disclosure of Domino DB name can lead to data breach.', # thread of vulnerability, e.g. loss of information
|
|
22
|
+
:class => "Domino DB Names", # vulnerability class, e.g. Stored XSS, SQL-Injection, ...
|
|
23
|
+
:type => FINDING_TYPE_INFO # FINDING_TYPE_HINT, FINDING_TYPE_INFO, FINDING_TYPE_VULN
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
@pattern = '([a-zA-Z\/\-0-9\.:]+\.nsf)'
|
|
28
|
+
@dbs = []
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def do_test(chat)
|
|
32
|
+
begin
|
|
42
33
|
# puts "running module: #{Module.nesting[0].name}"
|
|
43
|
-
return if chat.response.nil? or chat.response.body.nil?
|
|
44
|
-
if chat.response.content_type =~ /text/ then
|
|
45
|
-
chat.response.body_encoded.split("\n").each do |line|
|
|
46
|
-
if line =~ /#{@pattern}/ then
|
|
47
|
-
match = $1
|
|
48
|
-
if not @dbs.include?(match) then
|
|
49
|
-
@dbs.push match
|
|
34
|
+
return if chat.response.nil? or chat.response.body.nil?
|
|
35
|
+
if chat.response.content_type =~ /text/ then
|
|
36
|
+
chat.response.body_encoded.split("\n").each do |line|
|
|
37
|
+
if line =~ /#{@pattern}/ then
|
|
38
|
+
match = $1
|
|
39
|
+
if not @dbs.include?(match) then
|
|
40
|
+
@dbs.push match
|
|
50
41
|
addFinding(
|
|
51
42
|
:proof_pattern => "#{match}",
|
|
52
43
|
:chat => chat,
|
|
53
44
|
:title => match
|
|
54
|
-
)
|
|
55
|
-
end
|
|
56
|
-
end
|
|
57
|
-
end
|
|
58
|
-
end
|
|
59
|
-
rescue => bang
|
|
60
|
-
# raise
|
|
61
|
-
puts "ERROR!! #{self.class}"
|
|
62
|
-
puts bang
|
|
63
|
-
puts bang.backtrace if $DEBUG
|
|
64
|
-
end
|
|
65
|
-
end
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
end
|
|
69
|
-
end
|
|
70
|
-
end
|
|
45
|
+
)
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
rescue => bang
|
|
51
|
+
# raise
|
|
52
|
+
puts "ERROR!! #{self.class}"
|
|
53
|
+
puts bang
|
|
54
|
+
puts bang.backtrace if $DEBUG
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|