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.
Files changed (283) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +46 -1
  3. data/bin/nfq_server.rb +0 -9
  4. data/bin/watobo_gui.rb +3 -13
  5. data/custom-views/prettify-json.rb +9 -18
  6. data/icons/watobo.ico +0 -0
  7. data/icons/watobo.ico.old +0 -0
  8. data/lib/watobo.rb +10 -19
  9. data/lib/watobo/adapters.rb +5 -14
  10. data/lib/watobo/adapters/data_store.rb +50 -59
  11. data/lib/watobo/adapters/file/file_store.rb +287 -296
  12. data/lib/watobo/adapters/file/marshal_store.rb +293 -296
  13. data/lib/watobo/adapters/session_store.rb +5 -14
  14. data/lib/watobo/ca.rb +1 -10
  15. data/lib/watobo/config.rb +197 -206
  16. data/lib/watobo/constants.rb +0 -9
  17. data/lib/watobo/core.rb +3 -12
  18. data/lib/watobo/core/active_check.rb +72 -135
  19. data/lib/watobo/core/active_checks.rb +49 -58
  20. data/lib/watobo/core/ca.rb +369 -389
  21. data/lib/watobo/core/cert_store.rb +34 -43
  22. data/lib/watobo/core/chat.rb +92 -101
  23. data/lib/watobo/core/chats.rb +271 -280
  24. data/lib/watobo/core/client_cert_store.rb +106 -35
  25. data/lib/watobo/core/conversation.rb +48 -57
  26. data/lib/watobo/core/cookie.rb +23 -32
  27. data/lib/watobo/core/egress_handlers.rb +98 -0
  28. data/lib/watobo/core/finding.rb +66 -75
  29. data/lib/watobo/core/findings.rb +107 -114
  30. data/lib/watobo/core/forwarding_proxy.rb +13 -22
  31. data/lib/watobo/core/fuzz_gen.rb +0 -9
  32. data/lib/watobo/core/intercept_carver.rb +166 -177
  33. data/lib/watobo/core/intercept_filter.rb +235 -244
  34. data/lib/watobo/core/interceptor.rb +98 -107
  35. data/lib/watobo/core/min_class.rb +4 -13
  36. data/lib/watobo/core/netfilter_queue.rb +170 -179
  37. data/lib/watobo/core/ott_cache.rb +132 -141
  38. data/lib/watobo/core/parameter.rb +43 -52
  39. data/lib/watobo/core/passive_check.rb +103 -102
  40. data/lib/watobo/core/passive_checks.rb +48 -57
  41. data/lib/watobo/core/passive_scanner.rb +54 -55
  42. data/lib/watobo/core/plugin.rb +11 -20
  43. data/lib/watobo/core/project.rb +3 -9
  44. data/lib/watobo/core/proxy.rb +43 -52
  45. data/lib/watobo/core/request.rb +125 -123
  46. data/lib/watobo/core/response.rb +44 -53
  47. data/lib/watobo/core/scanner.rb +0 -9
  48. data/lib/watobo/core/scanner3.rb +405 -414
  49. data/lib/watobo/core/scope.rb +83 -92
  50. data/lib/watobo/core/session.rb +1043 -1026
  51. data/lib/watobo/core/sid_cache.rb +98 -107
  52. data/lib/watobo/core/subscriber.rb +25 -34
  53. data/lib/watobo/defaults.rb +21 -30
  54. data/lib/watobo/external/diff/lcs.rb +0 -9
  55. data/lib/watobo/external/diff/lcs/array.rb +0 -9
  56. data/lib/watobo/external/diff/lcs/block.rb +0 -9
  57. data/lib/watobo/external/diff/lcs/callbacks.rb +0 -9
  58. data/lib/watobo/external/diff/lcs/change.rb +0 -9
  59. data/lib/watobo/external/diff/lcs/hunk.rb +0 -9
  60. data/lib/watobo/external/diff/lcs/ldiff.rb +0 -9
  61. data/lib/watobo/external/diff/lcs/string.rb +0 -9
  62. data/lib/watobo/externals.rb +6 -15
  63. data/lib/watobo/framework.rb +4 -13
  64. data/lib/watobo/framework/create_project.rb +60 -69
  65. data/lib/watobo/framework/init.rb +0 -9
  66. data/lib/watobo/framework/init_modules.rb +0 -9
  67. data/lib/watobo/framework/license_text.rb +28 -37
  68. data/lib/watobo/framework/load_chat.rb +13 -22
  69. data/lib/watobo/gui.rb +132 -123
  70. data/lib/watobo/gui/about_watobo.rb +0 -9
  71. data/lib/watobo/gui/browser_preview.rb +0 -9
  72. data/lib/watobo/gui/certificate_dialog.rb +0 -9
  73. data/lib/watobo/gui/chat_diff.rb +0 -9
  74. data/lib/watobo/gui/chatviewer_frame.rb +73 -72
  75. data/lib/watobo/gui/checkboxtree.rb +0 -9
  76. data/lib/watobo/gui/checks_policy_frame.rb +0 -9
  77. data/lib/watobo/gui/client_cert_dialog.rb +96 -87
  78. data/lib/watobo/gui/confirm_scan_dialog.rb +0 -9
  79. data/lib/watobo/gui/conversation_table.rb +158 -164
  80. data/lib/watobo/gui/conversation_table_ctrl.rb +207 -216
  81. data/lib/watobo/gui/conversation_table_ctrl2.rb +373 -382
  82. data/lib/watobo/gui/csrf_token_dialog.rb +0 -9
  83. data/lib/watobo/gui/custom_viewer.rb +374 -383
  84. data/lib/watobo/gui/dashboard.rb +296 -303
  85. data/lib/watobo/gui/define_scope_frame.rb +0 -9
  86. data/lib/watobo/gui/differ_frame.rb +215 -224
  87. data/lib/watobo/gui/edit_comment.rb +0 -9
  88. data/lib/watobo/gui/edit_scope_dialog.rb +0 -9
  89. data/lib/watobo/gui/export_dialog.rb +104 -113
  90. data/lib/watobo/gui/finding_info.rb +0 -9
  91. data/lib/watobo/gui/findings_tree.rb +210 -217
  92. data/lib/watobo/gui/full_scan_dialog.rb +0 -9
  93. data/lib/watobo/gui/fuzzer_gui.rb +1295 -1313
  94. data/lib/watobo/gui/fxsave_thread.rb +14 -0
  95. data/lib/watobo/gui/goto_url_dialog.rb +70 -79
  96. data/lib/watobo/gui/hex_viewer.rb +0 -9
  97. data/lib/watobo/gui/html_viewer.rb +287 -296
  98. data/lib/watobo/gui/intercept_filter_dialog.rb +188 -197
  99. data/lib/watobo/gui/interceptor_gui.rb +1041 -1051
  100. data/lib/watobo/gui/interceptor_settings_dialog.rb +0 -9
  101. data/lib/watobo/gui/json_viewer.rb +287 -0
  102. data/lib/watobo/gui/list_box.rb +101 -110
  103. data/lib/watobo/gui/log_file_viewer.rb +32 -41
  104. data/lib/watobo/gui/log_viewer.rb +83 -88
  105. data/lib/watobo/gui/login_wizzard.rb +0 -9
  106. data/lib/watobo/gui/main_window.rb +587 -618
  107. data/lib/watobo/gui/manual_request_editor.rb +620 -565
  108. data/lib/watobo/gui/master_pw_dialog.rb +0 -9
  109. data/lib/watobo/gui/mixins/gui_settings.rb +29 -38
  110. data/lib/watobo/gui/page_tree.rb +217 -226
  111. data/lib/watobo/gui/password_policy_dialog.rb +0 -9
  112. data/lib/watobo/gui/plugin_board.rb +0 -9
  113. data/lib/watobo/gui/preferences_dialog.rb +0 -9
  114. data/lib/watobo/gui/progress_window.rb +17 -27
  115. data/lib/watobo/gui/project_wizzard.rb +0 -9
  116. data/lib/watobo/gui/proxy_dialog.rb +1 -10
  117. data/lib/watobo/gui/quick_scan_dialog.rb +0 -9
  118. data/lib/watobo/gui/request_builder_frame.rb +102 -111
  119. data/lib/watobo/gui/request_editor.rb +181 -137
  120. data/lib/watobo/gui/rewrite_filters_dialog.rb +394 -403
  121. data/lib/watobo/gui/rewrite_rules_dialog.rb +372 -381
  122. data/lib/watobo/gui/save_chat_dialog.rb +140 -149
  123. data/lib/watobo/gui/scanner_settings_dialog.rb +0 -9
  124. data/lib/watobo/gui/select_chat_dialog.rb +0 -9
  125. data/lib/watobo/gui/session_management_dialog.rb +0 -9
  126. data/lib/watobo/gui/sites_tree.rb +0 -9
  127. data/lib/watobo/gui/status_bar.rb +0 -9
  128. data/lib/watobo/gui/table_editor.rb +0 -9
  129. data/lib/watobo/gui/tagless_viewer.rb +0 -9
  130. data/lib/watobo/gui/templates/plugin.rb +0 -9
  131. data/lib/watobo/gui/templates/plugin2.rb +92 -100
  132. data/lib/watobo/gui/templates/plugin_base.rb +144 -153
  133. data/lib/watobo/gui/text_viewer.rb +0 -9
  134. data/lib/watobo/gui/transcoder_window.rb +0 -9
  135. data/lib/watobo/gui/utils/gui_utils.rb +0 -9
  136. data/lib/watobo/gui/utils/init_icons.rb +86 -95
  137. data/lib/watobo/gui/utils/load_icons.rb +33 -42
  138. data/lib/watobo/gui/utils/load_plugins.rb +116 -119
  139. data/lib/watobo/gui/utils/master_password.rb +68 -77
  140. data/lib/watobo/gui/utils/save_default_settings.rb +113 -122
  141. data/lib/watobo/gui/utils/save_project_settings.rb +0 -9
  142. data/lib/watobo/gui/utils/save_proxy_settings.rb +41 -50
  143. data/lib/watobo/gui/utils/save_scanner_settings.rb +18 -27
  144. data/lib/watobo/gui/utils/session_history.rb +112 -121
  145. data/lib/watobo/gui/workspace_dialog.rb +0 -9
  146. data/lib/watobo/gui/www_auth_dialog.rb +0 -9
  147. data/lib/watobo/gui/xml_viewer_frame.rb +0 -9
  148. data/lib/watobo/http.rb +4 -13
  149. data/lib/watobo/http/cookies/cookies.rb +26 -35
  150. data/lib/watobo/http/data/data.rb +45 -54
  151. data/lib/watobo/http/data/json.rb +47 -55
  152. data/lib/watobo/http/url/url.rb +38 -47
  153. data/lib/watobo/http/xml/xml.rb +124 -130
  154. data/lib/watobo/interceptor.rb +3 -12
  155. data/lib/watobo/interceptor/proxy.rb +742 -739
  156. data/lib/watobo/interceptor/transparent.rb +22 -24
  157. data/lib/watobo/mixins.rb +10 -19
  158. data/lib/watobo/mixins/check_info.rb +27 -36
  159. data/lib/watobo/mixins/httpparser.rb +613 -637
  160. data/lib/watobo/mixins/request_parser.rb +88 -97
  161. data/lib/watobo/mixins/shapers.rb +515 -529
  162. data/lib/watobo/mixins/transcoders.rb +3 -11
  163. data/lib/watobo/parser.rb +1 -10
  164. data/lib/watobo/parser/html.rb +83 -92
  165. data/lib/watobo/patch_fxruby_setfocus.rb +26 -0
  166. data/lib/watobo/sockets.rb +3 -12
  167. data/lib/watobo/sockets/agent.rb +828 -837
  168. data/lib/watobo/sockets/client_socket.rb +308 -312
  169. data/lib/watobo/sockets/connection.rb +401 -410
  170. data/lib/watobo/sockets/http_socket.rb +11 -13
  171. data/lib/watobo/sockets/ntlm_auth.rb +129 -138
  172. data/lib/watobo/utils.rb +10 -19
  173. data/lib/watobo/utils/check_regex.rb +0 -9
  174. data/lib/watobo/utils/copy_object.rb +0 -9
  175. data/lib/watobo/utils/crypto.rb +0 -9
  176. data/lib/watobo/utils/expand_range.rb +23 -32
  177. data/lib/watobo/utils/export_xml.rb +97 -106
  178. data/lib/watobo/utils/file_management.rb +9 -11
  179. data/lib/watobo/utils/hexprint.rb +9 -18
  180. data/lib/watobo/utils/load_chat.rb +0 -9
  181. data/lib/watobo/utils/load_icon.rb +0 -9
  182. data/lib/watobo/utils/ntlm.rb +866 -875
  183. data/lib/watobo/utils/print_debug.rb +12 -21
  184. data/lib/watobo/utils/response_builder.rb +90 -99
  185. data/lib/watobo/utils/response_hash.rb +0 -9
  186. data/lib/watobo/utils/secure_eval.rb +0 -9
  187. data/lib/watobo/utils/strings.rb +10 -19
  188. data/lib/watobo/utils/text2request.rb +0 -9
  189. data/lib/watobo/utils/url.rb +23 -32
  190. data/lib/watobo/utils/utf16.rb +11 -20
  191. data/modules/active/Apache/mod_status.rb +0 -9
  192. data/modules/active/Apache/multiview.rb +151 -160
  193. data/modules/active/Flash/crossdomain.rb +0 -9
  194. data/modules/active/JWT/jwt_oauth2_none.rb +111 -0
  195. data/modules/active/cq5/cq5_default_selectors.rb +106 -115
  196. data/modules/active/cq5/cqp_user_enumeration.rb +125 -134
  197. data/modules/active/directories/dirwalker.rb +0 -9
  198. data/modules/active/discovery/fileextensions.rb +0 -9
  199. data/modules/active/discovery/http_methods.rb +0 -9
  200. data/modules/active/discovery/jsmapfiles.rb +79 -0
  201. data/modules/active/domino/domino_db.rb +68 -76
  202. data/modules/active/dotNET/custom_errors.rb +102 -111
  203. data/modules/active/dotNET/dotnet_files.rb +90 -99
  204. data/modules/active/fileinclusion/lfi_simple.rb +0 -9
  205. data/modules/active/jboss/jboss_basic.rb +0 -9
  206. data/modules/active/sap/business_objects.rb +51 -60
  207. data/modules/active/sap/its_commands.rb +0 -9
  208. data/modules/active/sap/its_service_parameter.rb +0 -9
  209. data/modules/active/sap/its_services.rb +0 -9
  210. data/modules/active/sap/its_xss.rb +0 -9
  211. data/modules/active/shell_shock/shell_shock.rb +139 -148
  212. data/modules/active/siebel/siebel_apps.rb +160 -169
  213. data/modules/active/sqlinjection/sql_boolean.rb +0 -9
  214. data/modules/active/sqlinjection/sql_numerical.rb +198 -0
  215. data/modules/active/sqlinjection/sqli_error.rb +0 -9
  216. data/modules/active/sqlinjection/sqli_timing.rb +220 -229
  217. data/modules/active/struts2/default_handler_ognl.rb +106 -115
  218. data/modules/active/struts2/include_params_ognl.rb +105 -114
  219. data/modules/active/xml/xml_xxe.rb +112 -123
  220. data/modules/active/xss/xss_ng.rb +214 -223
  221. data/modules/active/xss/xss_simple.rb +0 -9
  222. data/modules/passive/ajax.rb +68 -77
  223. data/modules/passive/autocomplete.rb +56 -65
  224. data/modules/passive/cookie_options.rb +0 -9
  225. data/modules/passive/cookie_xss.rb +0 -9
  226. data/modules/passive/detect_code.rb +0 -9
  227. data/modules/passive/detect_fileupload.rb +0 -9
  228. data/modules/passive/detect_infrastructure.rb +0 -9
  229. data/modules/passive/detect_one_time_tokens.rb +0 -9
  230. data/modules/passive/dirindexing.rb +0 -9
  231. data/modules/passive/disclosure_domino.rb +55 -64
  232. data/modules/passive/disclosure_emails.rb +0 -9
  233. data/modules/passive/disclosure_ipaddr.rb +55 -53
  234. data/modules/passive/filename_as_parameter.rb +0 -9
  235. data/modules/passive/form_spotter.rb +0 -9
  236. data/modules/passive/hidden_fields.rb +50 -59
  237. data/modules/passive/hotspots.rb +0 -9
  238. data/modules/passive/in_script_parameter.rb +0 -9
  239. data/modules/passive/json_web_token.rb +93 -0
  240. data/modules/passive/multiple_server_headers.rb +0 -9
  241. data/modules/passive/possible_login.rb +0 -9
  242. data/modules/passive/redirect_url.rb +0 -9
  243. data/modules/passive/redirectionz.rb +0 -9
  244. data/modules/passive/sap-headers.rb +56 -65
  245. data/modules/passive/xss_dom.rb +0 -9
  246. data/plugins/aem/aem.rb +11 -20
  247. data/plugins/aem/gui/main.rb +118 -127
  248. data/plugins/aem/gui/tree_view.rb +171 -180
  249. data/plugins/aem/lib/agent.rb +130 -138
  250. data/plugins/aem/lib/dispatcher.rb +45 -51
  251. data/plugins/aem/lib/engine.rb +177 -186
  252. data/plugins/catalog/catalog.rb +345 -355
  253. data/plugins/crawler/crawler.rb +4 -13
  254. data/plugins/crawler/gui.rb +5 -14
  255. data/plugins/crawler/gui/auth_frame.rb +270 -279
  256. data/plugins/crawler/gui/crawler_gui.rb +271 -276
  257. data/plugins/crawler/gui/general_settings_frame.rb +96 -105
  258. data/plugins/crawler/gui/hooks_frame.rb +80 -89
  259. data/plugins/crawler/gui/scope_frame.rb +50 -59
  260. data/plugins/crawler/gui/settings_tabbook.rb +38 -47
  261. data/plugins/crawler/gui/status_frame.rb +59 -68
  262. data/plugins/crawler/lib/bags.rb +18 -27
  263. data/plugins/crawler/lib/constants.rb +11 -20
  264. data/plugins/crawler/lib/engine.rb +488 -497
  265. data/plugins/crawler/lib/grabber.rb +68 -77
  266. data/plugins/crawler/lib/status.rb +71 -80
  267. data/plugins/crawler/lib/uri_mp.rb +12 -21
  268. data/plugins/filefinder/filefinder.rb +326 -333
  269. data/plugins/sqlmap/bin/test.rb +78 -87
  270. data/plugins/sqlmap/gui.rb +4 -13
  271. data/plugins/sqlmap/gui/main.rb +218 -227
  272. data/plugins/sqlmap/gui/options_frame.rb +97 -106
  273. data/plugins/sqlmap/lib/sqlmap_ctrl.rb +90 -100
  274. data/plugins/sqlmap/sqlmap.rb +2 -11
  275. data/plugins/sslchecker/cli/sslchecker_cli.rb +0 -9
  276. data/plugins/sslchecker/gui/cipher_table.rb +246 -254
  277. data/plugins/sslchecker/gui/gui.rb +258 -264
  278. data/plugins/sslchecker/gui/sslchecker.rb +4 -13
  279. data/plugins/sslchecker/lib/check.rb +127 -133
  280. data/plugins/wshell/gui/main.rb +119 -117
  281. data/plugins/wshell/lib/core.rb +38 -88
  282. data/plugins/wshell/wshell.rb +11 -20
  283. 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
- #path = File.expand_path(File.dirname(__FILE__))
11
-
12
- require_relative File.join( "..", "lib", "check")
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
- module Watobo#:nodoc: all
12
- module Plugin
13
- module Sslchecker
14
- class Check < Watobo::ActiveCheck
15
- attr :cipherlist
16
-
17
- @info.update(
18
- :check_name => 'SSL-Checker', # name of check which briefly describes functionality, will be used for tree and progress views
19
- :description => "Test applikation for supportes SSL Ciphers.", # description of checkfunction
20
- :author => "Andreas Schmidt", # author of check
21
- :version => "0.9" # check version
22
- )
23
-
24
- @finding.update(
25
- :threat => 'Attacks on weak encryption ciphers which may lead loss of privacy', # thread of vulnerability, e.g. loss of information
26
- :class => "SSL Ciphers", # vulnerability class, e.g. Stored XSS, SQL-Injection, ...
27
- :type => FINDING_TYPE_VULN, # FINDING_TYPE_HINT, FINDING_TYPE_INFO, FINDING_TYPE_VULN
28
- :rating => VULN_RATING_LOW
29
- )
30
-
31
-
32
- def initialize(project)
33
- super(project)
34
-
35
- @result = Hash.new
36
- @cipherlist = Array.new
37
-
38
-
39
- OpenSSL::SSL::SSLContext::METHODS.each do |method|
40
- next if method =~ /(client|server)/
41
- next if method =~ /23/
42
- #%w( TLSv1_server SSLv2_server SSLv3_server ).each do |method|
43
- puts ">> #{method}"
44
- begin
45
- ctx = OpenSSL::SSL::SSLContext.new(method)
46
- ctx.ciphers="ALL::COMPLEMENTOFALL::eNull"
47
- ctx.ciphers.each do |c|
48
- @cipherlist.push [ method, c[0]]
49
- end
50
- #ctx.ciphers="eNULL" # because ALL don't include Null-Ciphers!!!
51
- #ctx.ciphers.each do |c|
52
- # @cipherlist.push [ method, c[0]]
53
- #end
54
-
55
-
56
- rescue => bang
57
- puts bang
58
- end
59
-
60
- end
61
- # puts @cipherlist.to_yaml
62
- end
63
-
64
- def reset()
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
- #puts bang
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
- if check_cipher(request, method, c) == true
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
- def generateChecks_UNUSED(chat)
173
- begin
174
- @cipherlist.each do |method, c|
175
- checker = proc {
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
+
@@ -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
- def initialize()
19
- super()
20
-
21
- @history_pos = 0
22
-
23
- hs_green = FXHiliteStyle.new
24
- # hs_green.normalForeColor = FXRGBA(255,255,255,255)
25
- # hs_green.normalForeColor = FXRGBA(0,255,0,1)
26
- #hs_green.normalBackColor = FXRGBA(0,255,0,1)
27
- hs_green.style = FXText::STYLE_BOLD
28
-
29
- hs_red = FXHiliteStyle.new
30
- hs_red.normalForeColor = FXRGBA(255,0,0,1)
31
- #hs_red.normalBackColor = FXRGBA(255,0,0,1)
32
- hs_red.style = FXText::STYLE_BOLD
33
-
34
- frame = FXVerticalFrame.new(self, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y)
35
- output_frame = FXVerticalFrame.new(frame, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_SUNKEN|FRAME_THICK, :padding => 0)
36
- @output = FXText.new(output_frame, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y)
37
- @output.editable = false
38
- @output.styled = true
39
- #@font = FXFont.new(getApp(), "courier", 12, FONTWEIGHT_BOLD)
40
- @output.setFont(FXFont.new(getApp(), "courier", 10, FONTSLANT_ITALIC, FONTENCODING_DEFAULT))
41
- @output.hiliteStyles = [ hs_red, hs_green]
42
-
43
- @output.appendStyledText Watobo::Plugin::WShell::HELP_TEXT, 2
44
-
45
- FXLabel.new(frame, "Enter 'help' for more information.")
46
-
47
- cmd_frame = FXHorizontalFrame.new(frame, :opts => LAYOUT_FILL_X)
48
- @cmd = FXTextField.new(cmd_frame, 25, nil, 0, :opts => TEXTFIELD_NORMAL|LAYOUT_FILL_X|LAYOUT_LEFT)
49
- @cmd.connect(SEL_COMMAND){ run_cmd }
50
-
51
- @cmd.connect(SEL_KEYPRESS) do |sender, sel, event|
52
- fin = false
53
- if event.code == KEY_Up
54
- @history_pos -=1 if @history_pos > 0
55
- set_history_cmd
56
- fin = true
57
- elsif event.code == KEY_Down
58
- @history_pos += 1 if @history_pos < Watobo::Plugin::WShell.history_length-1
59
- set_history_cmd
60
- fin = true
61
- end
62
- fin
63
- end
64
-
65
- @cmd.setFocus()
66
- @cmd.setDefault()
67
-
68
- @cmd_btn = FXButton.new(cmd_frame, "run")
69
- @executions = Watobo::Plugin::WShell.executions
70
-
71
- @cmd_btn.connect(SEL_COMMAND){ run_cmd }
72
-
73
- update_timer{
74
- unless @executions.empty?
75
- cmd, result = @executions.pop
76
-
77
- # @output.appendText(">> #{cmd}\n")
78
- @output.appendText("#{result}\n")
79
- @output.appendText("\n---\n")
80
-
81
- @output.makePositionVisible @output.length-1
82
-
83
- @cmd.enabled = true
84
- @cmd.backColor = FXColor::White
85
- @cmd.text = ''
86
- @cmd.setFocus
87
-
88
- end
89
- }
90
- end
91
-
92
- private
93
-
94
- def set_history_cmd()
95
- cmd = Watobo::Plugin::WShell.history_at @history_pos
96
- @cmd.text = cmd
97
- end
98
-
99
- def run_cmd
100
- unless @cmd.text.empty?
101
- if @cmd.text =~ /^help$/i
102
- # @output.appendText(Watobo::Plugin::WShell.help)
103
- @output.appendStyledText Watobo::Plugin::WShell::HELP_TEXT, 2
104
- @cmd.text = ''
105
- return true
106
- end
107
- @output.appendStyledText ">> #{@cmd.text}\n", 1
108
- @history_pos = Watobo::Plugin::WShell.history_length+1
109
- @cmd.enabled = false
110
- @cmd.backColor = @cmd.parent.backColor
111
-
112
- Watobo::Plugin::WShell.execute_cmd @cmd.text
113
- end
114
- end
115
- end
116
- end
117
- end
118
- end
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