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,60 +1,51 @@
|
|
|
1
|
-
#.
|
|
2
|
-
# passive_checks.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
|
-
class PassiveModules
|
|
13
|
-
@checks = []
|
|
14
|
-
|
|
15
|
-
def self.each(&block)
|
|
16
|
-
if block_given?
|
|
17
|
-
@checks.map{|c| yield c }
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def self.to_a
|
|
23
|
-
@checks
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
def self.length
|
|
27
|
-
@checks.length
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
def self.init
|
|
31
|
-
passive_modules = []
|
|
32
|
-
|
|
33
|
-
Dir["#{Watobo.passive_module_path}/*.rb"].each do |mod_file|
|
|
34
|
-
begin
|
|
35
|
-
mod = File.basename(mod_file)
|
|
36
|
-
|
|
37
|
-
load mod_file
|
|
38
|
-
rescue => bang
|
|
39
|
-
puts "!!!"
|
|
40
|
-
puts bang
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
Watobo::Modules::Passive.constants.each do |m|
|
|
45
|
-
begin
|
|
46
|
-
class_constant = Watobo::Modules::Passive.const_get(m)
|
|
47
|
-
pc = class_constant.new(self)
|
|
48
|
-
print "."
|
|
49
|
-
@checks << pc
|
|
50
|
-
|
|
51
|
-
rescue => bang
|
|
52
|
-
puts "!!!"
|
|
53
|
-
puts bang
|
|
54
|
-
end
|
|
2
|
+
module Watobo#:nodoc: all
|
|
3
|
+
class PassiveModules
|
|
4
|
+
@checks = []
|
|
5
|
+
|
|
6
|
+
def self.each(&block)
|
|
7
|
+
if block_given?
|
|
8
|
+
@checks.map{|c| yield c }
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def self.to_a
|
|
14
|
+
@checks
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def self.length
|
|
18
|
+
@checks.length
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def self.init
|
|
22
|
+
passive_modules = []
|
|
23
|
+
|
|
24
|
+
Dir["#{Watobo.passive_module_path}/*.rb"].each do |mod_file|
|
|
25
|
+
begin
|
|
26
|
+
mod = File.basename(mod_file)
|
|
27
|
+
|
|
28
|
+
load mod_file
|
|
29
|
+
rescue => bang
|
|
30
|
+
puts "!!!"
|
|
31
|
+
puts bang
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
Watobo::Modules::Passive.constants.each do |m|
|
|
36
|
+
begin
|
|
37
|
+
class_constant = Watobo::Modules::Passive.const_get(m)
|
|
38
|
+
pc = class_constant.new(self)
|
|
39
|
+
print "."
|
|
40
|
+
@checks << pc
|
|
41
|
+
|
|
42
|
+
rescue => bang
|
|
43
|
+
puts "!!!"
|
|
44
|
+
puts bang
|
|
45
|
+
end
|
|
55
46
|
end
|
|
56
|
-
|
|
57
|
-
passive_modules
|
|
58
|
-
end
|
|
59
|
-
end
|
|
47
|
+
|
|
48
|
+
passive_modules
|
|
49
|
+
end
|
|
50
|
+
end
|
|
60
51
|
end
|
|
@@ -1,57 +1,56 @@
|
|
|
1
|
-
#.
|
|
2
|
-
# passive_scanner.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 PassiveScanner
|
|
13
|
-
@queue = Queue.new
|
|
14
|
-
@max_threads = 1
|
|
15
|
-
@scanners = []
|
|
16
|
-
class Engine
|
|
17
|
-
def initialize
|
|
18
|
-
@t = nil
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def run
|
|
22
|
-
@t = Thread.new{
|
|
23
|
-
loop do
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
def self.
|
|
46
|
-
@
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
2
|
+
module Watobo #:nodoc: all
|
|
3
|
+
module PassiveScanner
|
|
4
|
+
@queue = Queue.new
|
|
5
|
+
@max_threads = 1
|
|
6
|
+
@scanners = []
|
|
7
|
+
class Engine
|
|
8
|
+
def initialize
|
|
9
|
+
@t = nil
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def run
|
|
13
|
+
@t = Thread.new {
|
|
14
|
+
loop do
|
|
15
|
+
if Watobo::PassiveScanner.queue.size > 0
|
|
16
|
+
chat = Watobo::PassiveScanner.pop
|
|
17
|
+
unless chat.nil?
|
|
18
|
+
Watobo::PassiveModules.each do |test_module|
|
|
19
|
+
begin
|
|
20
|
+
test_module.do_test(chat)
|
|
21
|
+
rescue => bang
|
|
22
|
+
puts bang
|
|
23
|
+
puts bang.backtrace #if $DEBUG
|
|
24
|
+
#return false
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
else
|
|
29
|
+
sleep 0.5
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
}
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def self.queue
|
|
37
|
+
@queue
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def self.pop
|
|
41
|
+
return @queue.pop
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def self.start
|
|
45
|
+
#@max_threads.times do |i|
|
|
46
|
+
e = Engine.new
|
|
47
|
+
e.run
|
|
48
|
+
#end
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def self.add(chat)
|
|
52
|
+
@queue.push chat
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
end
|
|
57
56
|
end
|
data/lib/watobo/core/plugin.rb
CHANGED
|
@@ -1,21 +1,12 @@
|
|
|
1
|
-
#.
|
|
2
|
-
# plugin.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
|
-
|
|
13
|
-
module Plugin
|
|
14
|
-
def self.each
|
|
15
|
-
constants.each do |c|
|
|
16
|
-
yield c if block_given?
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
end
|
|
2
|
+
module Watobo#:nodoc: all
|
|
3
|
+
|
|
4
|
+
module Plugin
|
|
5
|
+
def self.each
|
|
6
|
+
constants.each do |c|
|
|
7
|
+
yield c if block_given?
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
end
|
data/lib/watobo/core/project.rb
CHANGED
|
@@ -1,12 +1,3 @@
|
|
|
1
|
-
#.
|
|
2
|
-
# project.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
|
|
|
@@ -334,6 +325,9 @@ module Watobo#:nodoc: all
|
|
|
334
325
|
begin
|
|
335
326
|
puts "DEBUG: Setup Project" if $DEBUG and $debug_project
|
|
336
327
|
importSession()
|
|
328
|
+
puts "* initialize egress handlers ..."
|
|
329
|
+
Watobo::EgressHandlers.init
|
|
330
|
+
|
|
337
331
|
|
|
338
332
|
rescue => bang
|
|
339
333
|
puts bang
|
data/lib/watobo/core/proxy.rb
CHANGED
|
@@ -1,54 +1,45 @@
|
|
|
1
|
-
#.
|
|
2
|
-
# proxy.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
|
-
class Proxy
|
|
13
|
-
include Watobo::Constants
|
|
14
|
-
|
|
15
|
-
attr :login
|
|
16
|
-
|
|
17
|
-
def method_missing(name, *args, &block)
|
|
18
|
-
# puts "* instance method missing (#{name})"
|
|
19
|
-
if @settings.has_key? name.to_sym
|
|
20
|
-
return @settings[name.to_sym]
|
|
21
|
-
else
|
|
22
|
-
super
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
def to_yaml
|
|
27
|
-
@settings.to_yaml
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
def has_login?
|
|
32
|
-
# puts @settings.to_yaml
|
|
33
|
-
return false if @settings[:auth_type] == AUTH_TYPE_NONE
|
|
34
|
-
return true
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
def initialize(prefs)
|
|
38
|
-
@login = nil
|
|
39
|
-
raise ArgumentError, "Proxy needs host, port and name" unless prefs.has_key? :host
|
|
40
|
-
raise ArgumentError, "Proxy needs host, port and name" unless prefs.has_key? :port
|
|
41
|
-
raise ArgumentError, "Proxy needs host, port and name" unless prefs.has_key? :name
|
|
42
|
-
|
|
43
|
-
@settings = {
|
|
44
|
-
:auth_type => AUTH_TYPE_NONE,
|
|
45
|
-
:username => '',
|
|
46
|
-
:password => '',
|
|
47
|
-
:domain => '',
|
|
48
|
-
:workstation => ''}
|
|
49
|
-
|
|
50
|
-
@settings.update prefs
|
|
51
|
-
|
|
52
|
-
end
|
|
53
|
-
end
|
|
2
|
+
module Watobo#:nodoc: all
|
|
3
|
+
class Proxy
|
|
4
|
+
include Watobo::Constants
|
|
5
|
+
|
|
6
|
+
attr :login
|
|
7
|
+
|
|
8
|
+
def method_missing(name, *args, &block)
|
|
9
|
+
# puts "* instance method missing (#{name})"
|
|
10
|
+
if @settings.has_key? name.to_sym
|
|
11
|
+
return @settings[name.to_sym]
|
|
12
|
+
else
|
|
13
|
+
super
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def to_yaml
|
|
18
|
+
@settings.to_yaml
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def has_login?
|
|
23
|
+
# puts @settings.to_yaml
|
|
24
|
+
return false if @settings[:auth_type] == AUTH_TYPE_NONE
|
|
25
|
+
return true
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def initialize(prefs)
|
|
29
|
+
@login = nil
|
|
30
|
+
raise ArgumentError, "Proxy needs host, port and name" unless prefs.has_key? :host
|
|
31
|
+
raise ArgumentError, "Proxy needs host, port and name" unless prefs.has_key? :port
|
|
32
|
+
raise ArgumentError, "Proxy needs host, port and name" unless prefs.has_key? :name
|
|
33
|
+
|
|
34
|
+
@settings = {
|
|
35
|
+
:auth_type => AUTH_TYPE_NONE,
|
|
36
|
+
:username => '',
|
|
37
|
+
:password => '',
|
|
38
|
+
:domain => '',
|
|
39
|
+
:workstation => ''}
|
|
40
|
+
|
|
41
|
+
@settings.update prefs
|
|
42
|
+
|
|
43
|
+
end
|
|
44
|
+
end
|
|
54
45
|
end
|
data/lib/watobo/core/request.rb
CHANGED
|
@@ -1,112 +1,104 @@
|
|
|
1
|
-
#.
|
|
2
|
-
# request.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
|
-
def self.create_request(url, prefs={})
|
|
13
|
-
unless url =~ /^https?:\/\//
|
|
14
|
-
u = "http://#{url}"
|
|
15
|
-
else
|
|
16
|
-
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
uri = URI.parse u
|
|
20
|
-
r = "GET #{uri.to_s} HTTP/1.1\n"
|
|
2
|
+
module Watobo #:nodoc: all
|
|
3
|
+
def self.create_request(url, prefs={})
|
|
4
|
+
unless url =~ /^https?:\/\//
|
|
5
|
+
u = "http://#{url}"
|
|
6
|
+
else
|
|
7
|
+
u = url
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
uri = URI.parse u
|
|
11
|
+
r = "GET #{uri.to_s} HTTP/1.1\n"
|
|
21
12
|
r << "Host: #{uri.host}\n"
|
|
22
13
|
r << "User-Agent: WATOBO\n"
|
|
23
|
-
r << "Accept: */*\n"
|
|
24
|
-
r.extend Watobo::Mixins::RequestParser
|
|
25
|
-
r.to_request
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
class Request < Array
|
|
29
|
-
|
|
30
|
-
attr :data
|
|
31
|
-
attr :url
|
|
32
|
-
attr :header
|
|
14
|
+
r << "Accept: */*\n"
|
|
15
|
+
r.extend Watobo::Mixins::RequestParser
|
|
16
|
+
r.to_request
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
class Request < Array
|
|
20
|
+
|
|
21
|
+
attr :data
|
|
22
|
+
attr :url
|
|
23
|
+
attr :header
|
|
33
24
|
# attr :cookies
|
|
34
25
|
|
|
35
26
|
include Watobo::HTTP::Cookies::Mixin
|
|
36
|
-
include Watobo::HTTP::Xml::Mixin
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
request.extend Watobo::Mixin::Parser::
|
|
40
|
-
request.extend Watobo::Mixin::
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
Watobo::
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
hashbase <<
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
hashbase <<
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
puts bang
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
27
|
+
include Watobo::HTTP::Xml::Mixin
|
|
28
|
+
|
|
29
|
+
def self.create request
|
|
30
|
+
request.extend Watobo::Mixin::Parser::Url
|
|
31
|
+
request.extend Watobo::Mixin::Parser::Web10
|
|
32
|
+
request.extend Watobo::Mixin::Shaper::Web10
|
|
33
|
+
# request = Request.new(request)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def copy
|
|
37
|
+
c = Watobo::Utils.copyObject self
|
|
38
|
+
Watobo::Request.new c
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def uniq_hash()
|
|
42
|
+
begin
|
|
43
|
+
settings = Watobo::Conf::Scanner.to_h
|
|
44
|
+
hashbase = site + method + path
|
|
45
|
+
|
|
46
|
+
get_parm_names.sort.each do |p|
|
|
47
|
+
hashbase << p
|
|
48
|
+
hashbase << get_parm_value(p) if settings[:non_unique_parms].include?(p)
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
post_parm_names.sort.each do |p|
|
|
52
|
+
|
|
53
|
+
hashbase << p
|
|
54
|
+
hashbase << post_parm_value(p) if settings[:non_unique_parms].include?(p)
|
|
55
|
+
end
|
|
56
|
+
# puts hashbase
|
|
57
|
+
return Digest::MD5.hexdigest(hashbase)
|
|
58
|
+
rescue => bang
|
|
59
|
+
puts bang
|
|
60
|
+
puts bang.backtrace if $DEBUG
|
|
61
|
+
return nil
|
|
62
|
+
end
|
|
63
|
+
end
|
|
72
64
|
|
|
73
65
|
def parameters(*locations, &block)
|
|
74
|
-
param_locations = [
|
|
66
|
+
param_locations = [:url, :data, :wwwform, :xml, :cookies, :json]
|
|
75
67
|
unless locations.empty?
|
|
76
|
-
param_locations.select!{ |loc| locations.include? loc }
|
|
68
|
+
param_locations.select! { |loc| locations.include? loc }
|
|
77
69
|
end
|
|
78
|
-
|
|
70
|
+
|
|
79
71
|
parms = []
|
|
80
72
|
parms.concat @url.parameters if param_locations.include?(:url)
|
|
81
|
-
parms.concat cookies.parameters if param_locations.include?(:cookies)
|
|
82
|
-
parms.concat @data.parameters if !@data.nil? and self.is_wwwform? and (
|
|
83
|
-
parms.concat @json.parameters if !@json.nil? and self.is_json? and (
|
|
73
|
+
parms.concat cookies.parameters if param_locations.include?(:cookies)
|
|
74
|
+
parms.concat @data.parameters if !@data.nil? and self.is_wwwform? and (param_locations.include?(:data) or param_locations.include?(:wwwform))
|
|
75
|
+
parms.concat @json.parameters if !@json.nil? and self.is_json? and (param_locations.include?(:data) or param_locations.include?(:json))
|
|
84
76
|
|
|
85
77
|
parms.concat xml.parameters if self.is_xml? and param_locations.include?(:xml)
|
|
86
78
|
if block_given?
|
|
87
79
|
parms.each do |p|
|
|
88
80
|
yield p
|
|
89
81
|
end
|
|
90
|
-
end
|
|
91
|
-
parms
|
|
92
|
-
end
|
|
93
|
-
|
|
94
|
-
def set(parm)
|
|
95
|
-
case parm.location
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
end
|
|
109
|
-
true
|
|
82
|
+
end
|
|
83
|
+
parms
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
def set(parm)
|
|
87
|
+
case parm.location
|
|
88
|
+
when :data
|
|
89
|
+
#
|
|
90
|
+
# replace_post_parm(parm.name, parm.value)
|
|
91
|
+
@data.set parm
|
|
92
|
+
when :url
|
|
93
|
+
@url.set parm
|
|
94
|
+
when :xml
|
|
95
|
+
xml.set parm
|
|
96
|
+
when :cookie
|
|
97
|
+
cookies.set parm
|
|
98
|
+
when :json
|
|
99
|
+
@json.set parm
|
|
100
|
+
end
|
|
101
|
+
true
|
|
110
102
|
end
|
|
111
103
|
|
|
112
104
|
def to_s
|
|
@@ -115,39 +107,49 @@ module Watobo#:nodoc: all
|
|
|
115
107
|
data << "\r\n" unless data =~ /\r\n\r\n$/
|
|
116
108
|
end
|
|
117
109
|
data
|
|
118
|
-
end
|
|
119
|
-
|
|
120
|
-
def initialize(r)
|
|
121
|
-
if r.respond_to? :concat
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
elsif r.is_a? String
|
|
125
|
-
if r =~ /^http/
|
|
126
|
-
uri = URI.parse r
|
|
127
|
-
self << "GET #{uri.to_s} HTTP/1.1\r\n"
|
|
128
|
-
self << "Host: #{uri.host}\r\n"
|
|
129
|
-
else
|
|
130
|
-
r.extend Watobo::Mixins::RequestParser
|
|
131
|
-
|
|
132
|
-
end
|
|
133
|
-
|
|
134
|
-
end
|
|
135
|
-
self.extend Watobo::Mixin::Parser::Url
|
|
136
|
-
self.extend Watobo::Mixin::Parser::Web10
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
def initialize(r)
|
|
113
|
+
if r.respond_to? :concat
|
|
114
|
+
#puts "Create REQUEST from ARRAY"
|
|
115
|
+
self.concat r
|
|
116
|
+
elsif r.is_a? String
|
|
117
|
+
if r =~ /^http/
|
|
118
|
+
uri = URI.parse r
|
|
119
|
+
self << "GET #{uri.to_s} HTTP/1.1\r\n"
|
|
120
|
+
self << "Host: #{uri.host}\r\n"
|
|
121
|
+
else
|
|
122
|
+
r.extend Watobo::Mixins::RequestParser
|
|
123
|
+
self.concat r.to_request
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
end
|
|
127
|
+
self.extend Watobo::Mixin::Parser::Url
|
|
128
|
+
self.extend Watobo::Mixin::Parser::Web10
|
|
137
129
|
self.extend Watobo::Mixin::Shaper::Web10
|
|
138
|
-
|
|
139
|
-
|
|
130
|
+
self.extend Watobo::Mixin::Shaper::HttpResponse
|
|
131
|
+
|
|
132
|
+
@url = Watobo::HTTP::Url.new(self)
|
|
133
|
+
ct = content_type
|
|
134
|
+
|
|
135
|
+
if ct =~ /\+zlib/
|
|
136
|
+
dec_body = Zlib.inflate body
|
|
137
|
+
setData dec_body
|
|
138
|
+
set_content_type content_type.gsub(/\+zlib/, '')
|
|
139
|
+
fix_content_length
|
|
140
|
+
end
|
|
141
|
+
|
|
140
142
|
case self.content_type
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
143
|
+
when /www-form/i
|
|
144
|
+
@data = Watobo::HTTPData::WWW_Form.new(self)
|
|
145
|
+
when /application\/json/i
|
|
146
|
+
@json = Watobo::HTTPData::JSONData.new(self)
|
|
147
|
+
else
|
|
148
|
+
#puts "UNKONWN CONTENT-TYPE"
|
|
149
|
+
@data = Watobo::HTTPData::WWW_Form.new(self)
|
|
148
150
|
end
|
|
149
|
-
|
|
150
|
-
@cookies = Watobo::HTTP::Cookies.new(self)
|
|
151
|
-
end
|
|
152
|
-
end
|
|
151
|
+
|
|
152
|
+
@cookies = Watobo::HTTP::Cookies.new(self)
|
|
153
|
+
end
|
|
154
|
+
end
|
|
153
155
|
end
|