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,14 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
# sslchecker.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
|
+
#path = File.expand_path(File.dirname(__FILE__))
|
|
9
2
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
require_relative
|
|
13
|
-
require_relative "cipher_table"
|
|
14
|
-
require_relative "gui"
|
|
3
|
+
require_relative File.join( "..", "lib", "check")
|
|
4
|
+
require_relative "cipher_table"
|
|
5
|
+
require_relative "gui"
|
|
@@ -1,68 +1,58 @@
|
|
|
1
|
-
#.
|
|
2
|
-
# check.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
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
:
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
@result.clear
|
|
2
|
+
# Mozillas recommended ciphers (https://wiki.mozilla.org/Security/Server_Side_TLS):
|
|
3
|
+
# ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK
|
|
4
|
+
#
|
|
5
|
+
#
|
|
6
|
+
module Watobo#:nodoc: all
|
|
7
|
+
module Plugin
|
|
8
|
+
module Sslchecker
|
|
9
|
+
class Check < Watobo::ActiveCheck
|
|
10
|
+
attr :cipherlist
|
|
11
|
+
|
|
12
|
+
@info.update(
|
|
13
|
+
:check_name => 'SSL-Checker', # name of check which briefly describes functionality, will be used for tree and progress views
|
|
14
|
+
:description => "Test system for supported SSL Ciphers.", # description of checkfunction
|
|
15
|
+
:author => "Andreas Schmidt", # author of check
|
|
16
|
+
:version => "0.9" # check version
|
|
17
|
+
)
|
|
18
|
+
|
|
19
|
+
@finding.update(
|
|
20
|
+
:threat => 'Attacks on weak encryption ciphers which may lead loss of privacy', # thread of vulnerability, e.g. loss of information
|
|
21
|
+
:class => "Bad SSL Ciphers", # 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
|
+
)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def initialize(project)
|
|
28
|
+
super(project)
|
|
29
|
+
|
|
30
|
+
@result = Hash.new
|
|
31
|
+
@cipherlist = Array.new
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
OpenSSL::SSL::SSLContext::METHODS.each do |method|
|
|
35
|
+
next if method =~ /(client|server)/
|
|
36
|
+
next if method =~ /23/
|
|
37
|
+
#%w( TLSv1_server SSLv2_server SSLv3_server ).each do |method|
|
|
38
|
+
puts ">> #{method}"
|
|
39
|
+
begin
|
|
40
|
+
ctx = OpenSSL::SSL::SSLContext.new(method)
|
|
41
|
+
ctx.ciphers="ALL::COMPLEMENTOFALL::eNull"
|
|
42
|
+
ctx.ciphers.each do |c|
|
|
43
|
+
@cipherlist.push [ method, c[0]]
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
rescue => bang
|
|
47
|
+
puts bang
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
end
|
|
51
|
+
# puts @cipherlist.to_yaml
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def reset()
|
|
55
|
+
@result.clear
|
|
66
56
|
end
|
|
67
57
|
|
|
68
58
|
def check_cipher(request, method, cipher)
|
|
@@ -88,7 +78,7 @@ module Watobo#:nodoc: all
|
|
|
88
78
|
puts request.first
|
|
89
79
|
return false, "WATOBO: Could not resolve hostname #{host}", nil
|
|
90
80
|
rescue => bang
|
|
91
|
-
|
|
81
|
+
puts bang
|
|
92
82
|
puts bang.backtrace if $DEBUG
|
|
93
83
|
end
|
|
94
84
|
|
|
@@ -118,6 +108,66 @@ module Watobo#:nodoc: all
|
|
|
118
108
|
@cipherlist.each do |method, c|
|
|
119
109
|
checker = proc {
|
|
120
110
|
|
|
111
|
+
# test_request = nil
|
|
112
|
+
# test_response = nil
|
|
113
|
+
|
|
114
|
+
# MAKE COPY BEFORE MODIFIYING REQUEST
|
|
115
|
+
request = chat.copyRequest
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
ctx = OpenSSL::SSL::SSLContext.new(method)
|
|
119
|
+
ctx.ciphers = c
|
|
120
|
+
cypher = ctx.ciphers.first
|
|
121
|
+
bits = cypher[2].to_i
|
|
122
|
+
algo = cypher[0]
|
|
123
|
+
|
|
124
|
+
result = {
|
|
125
|
+
:method => method,
|
|
126
|
+
:algo => algo,
|
|
127
|
+
:bits => bits,
|
|
128
|
+
:support => true
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
if check_cipher(request, method, c) == true
|
|
132
|
+
|
|
133
|
+
notify( :cipher_checked, result)
|
|
134
|
+
if bits < 128
|
|
135
|
+
fake_headers = ["200 SSL-Handshake OK\r\n", "SSL-Method: #{method}\r\n" ]
|
|
136
|
+
fake_headers << "SSL-Algorithm: #{algo}\r\n"
|
|
137
|
+
fake_headers << "SSL-Bits: #{bits}\r\n"
|
|
138
|
+
fake_response = Watobo::Response.new(fake_headers)
|
|
139
|
+
|
|
140
|
+
addFinding( request, fake_response,
|
|
141
|
+
:test_item => "#{algo}#{bits}",
|
|
142
|
+
#:proof_pattern => "#{match}",
|
|
143
|
+
:chat => chat,
|
|
144
|
+
:title => "[#{method}/#{algo}] - #{bits} Bit"
|
|
145
|
+
)
|
|
146
|
+
end
|
|
147
|
+
else
|
|
148
|
+
result[:support] = false
|
|
149
|
+
notify(:cipher_checked, result)
|
|
150
|
+
# puts "!!! ERROR: #{c}"
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
[ request, fake_response ]
|
|
154
|
+
|
|
155
|
+
}
|
|
156
|
+
yield checker
|
|
157
|
+
end
|
|
158
|
+
rescue => bang
|
|
159
|
+
puts "!error in module #{Module.nesting[0].name}"
|
|
160
|
+
puts bang
|
|
161
|
+
end
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
def generateChecks_UNUSED(chat)
|
|
167
|
+
begin
|
|
168
|
+
@cipherlist.each do |method, c|
|
|
169
|
+
checker = proc {
|
|
170
|
+
|
|
121
171
|
test_request = nil
|
|
122
172
|
test_response = nil
|
|
123
173
|
# !!! ATTENTION !!!
|
|
@@ -130,7 +180,8 @@ module Watobo#:nodoc: all
|
|
|
130
180
|
cypher = ctx.ciphers.first
|
|
131
181
|
bits = cypher[2].to_i
|
|
132
182
|
algo = cypher[0]
|
|
133
|
-
|
|
183
|
+
|
|
184
|
+
test_request, test_response = doRequest( request, :ssl_cipher => c )
|
|
134
185
|
result = {
|
|
135
186
|
:method => method,
|
|
136
187
|
:algo => algo,
|
|
@@ -138,7 +189,8 @@ module Watobo#:nodoc: all
|
|
|
138
189
|
:support => true
|
|
139
190
|
}
|
|
140
191
|
|
|
141
|
-
|
|
192
|
+
unless test_response.status =~ /555/
|
|
193
|
+
|
|
142
194
|
|
|
143
195
|
notify( :cipher_checked, result)
|
|
144
196
|
if bits < 128
|
|
@@ -166,69 +218,11 @@ module Watobo#:nodoc: all
|
|
|
166
218
|
puts bang
|
|
167
219
|
end
|
|
168
220
|
end
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
test_request = nil
|
|
178
|
-
test_response = nil
|
|
179
|
-
# !!! ATTENTION !!!
|
|
180
|
-
# MAKE COPY BEFORE MODIFIYING REQUEST
|
|
181
|
-
request = chat.copyRequest
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
ctx = OpenSSL::SSL::SSLContext.new(method)
|
|
185
|
-
ctx.ciphers = c
|
|
186
|
-
cypher = ctx.ciphers.first
|
|
187
|
-
bits = cypher[2].to_i
|
|
188
|
-
algo = cypher[0]
|
|
189
|
-
|
|
190
|
-
test_request, test_response = doRequest( request, :ssl_cipher => c )
|
|
191
|
-
result = {
|
|
192
|
-
:method => method,
|
|
193
|
-
:algo => algo,
|
|
194
|
-
:bits => bits,
|
|
195
|
-
:support => true
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
unless test_response.status =~ /555/
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
notify( :cipher_checked, result)
|
|
202
|
-
if bits < 128
|
|
203
|
-
|
|
204
|
-
addFinding( test_request, test_response,
|
|
205
|
-
:test_item => "#{algo}#{bits}",
|
|
206
|
-
#:proof_pattern => "#{match}",
|
|
207
|
-
:chat => chat,
|
|
208
|
-
:title => "[#{algo}] - #{bits} Bit"
|
|
209
|
-
)
|
|
210
|
-
end
|
|
211
|
-
else
|
|
212
|
-
result[:support] = false
|
|
213
|
-
notify(:cipher_checked, result)
|
|
214
|
-
# puts "!!! ERROR: #{c}"
|
|
215
|
-
end
|
|
216
|
-
|
|
217
|
-
[ test_request, test_response ]
|
|
218
|
-
|
|
219
|
-
}
|
|
220
|
-
yield checker
|
|
221
|
-
end
|
|
222
|
-
rescue => bang
|
|
223
|
-
puts "!error in module #{Module.nesting[0].name}"
|
|
224
|
-
puts bang
|
|
225
|
-
end
|
|
226
|
-
end
|
|
227
|
-
end
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
end
|
|
231
|
-
end
|
|
232
|
-
end
|
|
233
|
-
|
|
234
|
-
|
|
221
|
+
end
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
end
|
|
225
|
+
end
|
|
226
|
+
end
|
|
227
|
+
|
|
228
|
+
|
data/plugins/wshell/gui/main.rb
CHANGED
|
@@ -1,118 +1,120 @@
|
|
|
1
|
-
#.
|
|
2
|
-
# main.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 Plugin
|
|
13
|
-
class WShell
|
|
14
|
-
class Gui < Watobo::PluginGui
|
|
15
|
-
|
|
16
|
-
window_title "WATOBO Shell (experimental)"
|
|
17
|
-
icon_file "wsh.ico"
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
@output
|
|
39
|
-
|
|
40
|
-
@output.
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
@output.
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
@cmd.connect(
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
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
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
2
|
+
module Watobo #:nodoc: all
|
|
3
|
+
module Plugin
|
|
4
|
+
class WShell
|
|
5
|
+
class Gui < Watobo::PluginGui
|
|
6
|
+
|
|
7
|
+
window_title "WATOBO Shell (experimental)"
|
|
8
|
+
icon_file "wsh.ico"
|
|
9
|
+
|
|
10
|
+
def initialize()
|
|
11
|
+
super()
|
|
12
|
+
|
|
13
|
+
@history = []
|
|
14
|
+
@history_pos = 0
|
|
15
|
+
|
|
16
|
+
hs_green = FXHiliteStyle.new
|
|
17
|
+
# hs_green.normalForeColor = FXRGBA(255,255,255,255)
|
|
18
|
+
# hs_green.normalForeColor = FXRGBA(0,255,0,1)
|
|
19
|
+
#hs_green.normalBackColor = FXRGBA(0,255,0,1)
|
|
20
|
+
hs_green.style = FXText::STYLE_BOLD
|
|
21
|
+
|
|
22
|
+
hs_red = FXHiliteStyle.new
|
|
23
|
+
hs_red.normalForeColor = FXRGBA(255, 0, 0, 255)
|
|
24
|
+
#hs_red.normalBackColor = FXRGBA(255,0,0,1)
|
|
25
|
+
hs_red.style = FXText::STYLE_BOLD
|
|
26
|
+
|
|
27
|
+
frame = FXVerticalFrame.new(self, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y)
|
|
28
|
+
output_frame = FXVerticalFrame.new(frame, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_SUNKEN|FRAME_THICK, :padding => 0)
|
|
29
|
+
@output = FXText.new(output_frame, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y)
|
|
30
|
+
@output.editable = false
|
|
31
|
+
@output.styled = true
|
|
32
|
+
#@font = FXFont.new(getApp(), "courier", 12, FONTWEIGHT_BOLD)
|
|
33
|
+
@output.setFont(FXFont.new(getApp(), "courier", 10, FONTSLANT_ITALIC, FONTENCODING_DEFAULT))
|
|
34
|
+
@output.hiliteStyles = [hs_green, hs_red]
|
|
35
|
+
|
|
36
|
+
@output.appendStyledText Watobo::Plugin::WShell::HELP_TEXT, 1
|
|
37
|
+
|
|
38
|
+
FXLabel.new(frame, "Enter 'help' for more information.")
|
|
39
|
+
|
|
40
|
+
cmd_frame = FXHorizontalFrame.new(frame, :opts => LAYOUT_FILL_X)
|
|
41
|
+
@cmd = FXTextField.new(cmd_frame, 25, nil, 0, :opts => TEXTFIELD_NORMAL|LAYOUT_FILL_X|LAYOUT_LEFT)
|
|
42
|
+
@cmd.connect(SEL_COMMAND) { run_cmd }
|
|
43
|
+
|
|
44
|
+
@cmd.connect(SEL_KEYPRESS) do |sender, sel, event|
|
|
45
|
+
fin = false
|
|
46
|
+
if event.code == KEY_Up
|
|
47
|
+
@history_pos -=1 if @history_pos > 0
|
|
48
|
+
set_history_cmd
|
|
49
|
+
fin = true
|
|
50
|
+
elsif event.code == KEY_Down
|
|
51
|
+
@history_pos += 1 if @history_pos < @history.length-1
|
|
52
|
+
set_history_cmd
|
|
53
|
+
fin = true
|
|
54
|
+
end
|
|
55
|
+
fin
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
@cmd.setFocus()
|
|
59
|
+
@cmd.setDefault()
|
|
60
|
+
|
|
61
|
+
@cmd_btn = FXButton.new(cmd_frame, "run")
|
|
62
|
+
|
|
63
|
+
@cmd_btn.connect(SEL_COMMAND) { run_cmd }
|
|
64
|
+
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
private
|
|
68
|
+
|
|
69
|
+
def set_history_cmd()
|
|
70
|
+
@cmd.text = @history[@history_pos]
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def run_cmd
|
|
74
|
+
|
|
75
|
+
cmd = @cmd.text.strip
|
|
76
|
+
unless cmd.empty?
|
|
77
|
+
if cmd =~ /^help$/i
|
|
78
|
+
# @output.appendText(Watobo::Plugin::WShell.help)
|
|
79
|
+
@output.appendStyledText Watobo::Plugin::WShell::HELP_TEXT, 2
|
|
80
|
+
@cmd.text = ''
|
|
81
|
+
else
|
|
82
|
+
@output.appendStyledText ">> #{cmd}\n", 2
|
|
83
|
+
@cmd.enabled = false
|
|
84
|
+
@cmd.backColor = @cmd.parent.backColor
|
|
85
|
+
begin
|
|
86
|
+
@history << cmd unless @history.include? cmd
|
|
87
|
+
@history.shift if @history.length > 20
|
|
88
|
+
# set history_pos to length, because it will be reduced before it will be
|
|
89
|
+
# displayes
|
|
90
|
+
@history_pos = @history.length
|
|
91
|
+
|
|
92
|
+
# command = "out = StringIO.new; out << #{cmd}; out.string"
|
|
93
|
+
command = cmd
|
|
94
|
+
r = eval(command)
|
|
95
|
+
@output.appendStyledText "---\n#{r}\n---\n", 1
|
|
96
|
+
|
|
97
|
+
rescue SyntaxError, LocalJumpError, NameError => e
|
|
98
|
+
@output.appendStyledText ">> #{e}\n", 2
|
|
99
|
+
rescue => bang
|
|
100
|
+
puts bang.backtrace
|
|
101
|
+
@output.appendStyledText ">> #{bang}\n#{bang.backtrace}", 2
|
|
102
|
+
|
|
103
|
+
end
|
|
104
|
+
@output.makePositionVisible @output.length-1
|
|
105
|
+
|
|
106
|
+
@cmd.enabled = true
|
|
107
|
+
@cmd.backColor = FXColor::White
|
|
108
|
+
@cmd.text = ''
|
|
109
|
+
@cmd.setFocus
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
end
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
end
|