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,12 +1,3 @@
1
- #.
2
- # core.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
- %w( subscriber client_cert_store sid_cache ott_cache parameter conversation chat findings chats active_checks passive_checks scope passive_scanner scanner3 finding project scanner proxy session fuzz_gen interceptor passive_check active_check cookie request response intercept_filter intercept_carver plugin forwarding_proxy cert_store netfilter_queue ).each do |lib|
11
- require File.join( "watobo", "core", lib)
12
- end
1
+ %w( subscriber client_cert_store sid_cache ott_cache parameter conversation chat findings chats active_checks passive_checks scope passive_scanner scanner3 finding project scanner proxy session fuzz_gen interceptor passive_check active_check cookie request response intercept_filter intercept_carver plugin forwarding_proxy cert_store netfilter_queue egress_handlers).each do |lib|
2
+ require File.join( "watobo", "core", lib)
3
+ end
@@ -1,15 +1,6 @@
1
- #.
2
- # active_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
- class ActiveCheck < Watobo::Session # Base Class for Passive Checks
2
+ module Watobo #:nodoc: all
3
+ class ActiveCheck < Watobo::Session # Base Class for Passive Checks
13
4
  include Watobo::CheckInfoMixin
14
5
 
15
6
  attr :info
@@ -24,38 +15,38 @@ module Watobo#:nodoc: all
24
15
 
25
16
  @@status = :running # :running, :paused, :canceled
26
17
  @@lock = Mutex.new
27
-
28
- @info = {
29
- :check_name => '', # name of check which briefly describes functionality, will be used for tree and progress views
30
- :check_group => 'Misc', # groupname of check, will be used to group checks, e.g. :Generic, SAP, :Enumeration
31
- :description => '', # description of checkfunction
32
- :author => "not modified", # author of check
33
- :version => "unversioned", # check version
34
- :target => nil # reserved
35
18
 
36
- }
19
+ @info = {
20
+ :check_name => '', # name of check which briefly describes functionality, will be used for tree and progress views
21
+ :check_group => 'Misc', # groupname of check, will be used to group checks, e.g. :Generic, SAP, :Enumeration
22
+ :description => '', # description of checkfunction
23
+ :author => "not modified", # author of check
24
+ :version => "unversioned", # check version
25
+ :target => nil # reserved
26
+
27
+ }
28
+
29
+ @finding = {
30
+ :title => 'untitled', # [String] title name, used for finding tree
31
+ :check_pattern => nil, # [String] regex of vulnerability check if possible, will be used for highlighting
32
+ :proof_pattern => nil, # [String] regex of finding proof if possible, will be used for highlighting
33
+ :threat => '', # threat of vulnerability, e.g. loss of information
34
+ :measure => '', # measure
35
+ :class => "undefined", # [String] vulnerability class, e.g. Stored XSS, SQL-Injection, ...
36
+ :subclass => nil, # reserved
37
+ :type => FINDING_TYPE_UNDEFINED, # FINDING_TYPE_HINT, FINDING_TYPE_INFO, FINDING_TYPE_VULN
38
+ :chat => nil, # related chat must be linked
39
+ :rating => VULN_RATING_UNDEFINED, #
40
+ :cvss => "n/a", # CVSS Base Vector
41
+ :icon => nil, # Icon Type
42
+ :timestamp => nil # timestamp
43
+ }
37
44
 
38
- @finding = {
39
- :title => 'untitled', # [String] title name, used for finding tree
40
- :check_pattern => nil, # [String] regex of vulnerability check if possible, will be used for highlighting
41
- :proof_pattern => nil, # [String] regex of finding proof if possible, will be used for highlighting
42
- :threat => '', # threat of vulnerability, e.g. loss of information
43
- :measure => '', # measure
44
- :class => "undefined",# [String] vulnerability class, e.g. Stored XSS, SQL-Injection, ...
45
- :subclass => nil, # reserved
46
- :type => FINDING_TYPE_UNDEFINED, # FINDING_TYPE_HINT, FINDING_TYPE_INFO, FINDING_TYPE_VULN
47
- :chat => nil, # related chat must be linked
48
- :rating=> VULN_RATING_UNDEFINED, #
49
- :cvss => "n/a", # CVSS Base Vector
50
- :icon => nil, # Icon Type
51
- :timestamp => nil # timestamp
52
- }
53
-
54
45
  def self.inherited(subclass)
55
- subclass.instance_variable_set("@info", YAML.load(YAML.dump(@info)))
56
- subclass.instance_variable_set("@finding", YAML.load(YAML.dump(@finding)))
46
+ subclass.instance_variable_set("@info", YAML.load(YAML.dump(@info)))
47
+ subclass.instance_variable_set("@finding", YAML.load(YAML.dump(@finding)))
57
48
  end
58
-
49
+
59
50
  def addFinding(request, response, details)
60
51
  @@lock.synchronize {
61
52
 
@@ -75,16 +66,16 @@ module Watobo#:nodoc: all
75
66
  id_string << request.path
76
67
  id_string << new_details[:test_item] if new_details[:test_item]
77
68
  id_string << new_details[:class] if new_details[:class]
78
- id_string << new_details[:title] if new_details[:title]
69
+ id_string << new_details[:title] if new_details[:title]
79
70
 
80
71
  if id_string == '' then
81
- id_string = (Time.now.to_i + rand(10000)).to_s
72
+ id_string = (Time.now.to_i + rand(10000)).to_s
82
73
  end
83
74
  #
84
75
  unless new_details.has_key? :fid
85
- new_details[:fid] = Digest::MD5.hexdigest(id_string)
76
+ new_details[:fid] = Digest::MD5.hexdigest(id_string)
86
77
  end
87
-
78
+
88
79
  puts new_details[:fid] if $DEBUG
89
80
 
90
81
  new_details[:module] = self.class.to_s
@@ -94,9 +85,9 @@ module Watobo#:nodoc: all
94
85
  new_details.delete(:chat)
95
86
 
96
87
  new_finding = Watobo::Finding.new(request, response, new_details)
97
- # puts new_finding
88
+ # puts new_finding
98
89
  Watobo::Findings.add new_finding
99
- # notify(:new_finding, new_finding)
90
+ # notify(:new_finding, new_finding)
100
91
  }
101
92
  end
102
93
 
@@ -130,10 +121,10 @@ module Watobo#:nodoc: all
130
121
  end
131
122
  end
132
123
  rescue => bang
133
- puts "! settings 'excluded_parms' missing !"
134
- # puts @project.settings.to_yaml
135
- puts bang
136
- puts bang.backtrace if $DEBUG
124
+ puts "! settings 'excluded_parms' missing !"
125
+ # puts @project.settings.to_yaml
126
+ puts bang
127
+ puts bang.backtrace if $DEBUG
137
128
  end
138
129
  return pnames
139
130
  end
@@ -143,12 +134,12 @@ module Watobo#:nodoc: all
143
134
  return pnames unless @settings.has_key? :excluded_parms
144
135
  return pnames unless @settings[:excluded_parms].is_a? Array
145
136
  begin
146
- pnames.select!{|p| !@settings[:excluded_parms].include? p }
137
+ pnames.select! { |p| !@settings[:excluded_parms].include? p }
147
138
  rescue => bang
148
- #puts "! settings 'excluded_parms' missing !"
149
- # puts @project.settings.to_yaml
150
- puts bang
151
- puts bang.backtrace if $DEBUG
139
+ #puts "! settings 'excluded_parms' missing !"
140
+ # puts @project.settings.to_yaml
141
+ puts bang
142
+ puts bang.backtrace if $DEBUG
152
143
  end
153
144
  return pnames
154
145
  end
@@ -187,8 +178,8 @@ module Watobo#:nodoc: all
187
178
  return true if @inner_pool.size > 0
188
179
  return false
189
180
  rescue => bang
190
- p bang
191
- p bang.backtrace
181
+ p bang
182
+ p bang.backtrace
192
183
  end
193
184
  end
194
185
 
@@ -207,11 +198,11 @@ module Watobo#:nodoc: all
207
198
 
208
199
  def continue_UNUSED()
209
200
  @@pool.each do |thr|
210
- # puts "Stopping #{thr}"
201
+ # puts "Stopping #{thr}"
211
202
  begin
212
203
  thr.run if not thr.run?
213
204
  rescue
214
- puts "could not continue thread #{thr}"
205
+ puts "could not continue thread #{thr}"
215
206
  end
216
207
  end
217
208
  end
@@ -221,16 +212,16 @@ module Watobo#:nodoc: all
221
212
  @inner_pool.each do |thr|
222
213
  begin
223
214
  if thr.alive?
224
- puts "Stopping #{thr}" if $DEBUG
215
+ puts "Stopping #{thr}" if $DEBUG
225
216
 
226
- Thread.kill( thr ) #.kill if not thr.kill?
217
+ Thread.kill(thr) #.kill if not thr.kill?
227
218
 
228
219
  end
229
220
  @inner_pool.delete(thr)
230
221
  rescue => bang
231
- puts "could not kill thread #{thr}"
232
- puts bang
233
- puts bang.backtrace if $DEBUG
222
+ puts "could not kill thread #{thr}"
223
+ puts bang
224
+ puts bang.backtrace if $DEBUG
234
225
  end
235
226
  end
236
227
  @inner_pool_cv.signal
@@ -247,11 +238,11 @@ module Watobo#:nodoc: all
247
238
  t_request, t_response = doRequest(request, prefs)
248
239
  #puts t_response.status
249
240
  status = t_response.status
250
- return false if status.empty?
241
+ return false, t_request, t_response if status.empty?
251
242
  return true, t_request, t_response if status =~ /^403/
252
243
  return false, t_request, t_response if status =~ /^40\d/
253
244
  if status =~ /^50\d/
254
- # puts "* ignore server errors #{Watobo::Conf::Scanner.ignore_server_errors.class}"
245
+ # puts "* ignore server errors #{Watobo::Conf::Scanner.ignore_server_errors.class}"
255
246
  return false, t_request, t_response if Watobo::Conf::Scanner.ignore_server_errors
256
247
  end
257
248
 
@@ -259,28 +250,22 @@ module Watobo#:nodoc: all
259
250
 
260
251
  if @settings.has_key? :custom_error_patterns
261
252
  @settings[:custom_error_patterns].each do |pat|
262
- # puts pat
263
253
  t_response.headers.each do |hl|
264
- return false if hl =~ /#{pat}/
254
+ return false, t_request, t_response if hl =~ /#{pat}/
265
255
  end
266
- # puts t_response.body.class
256
+
267
257
  unless t_response.body.nil?
268
- # puts "* check body"
269
- # puts t_response.body
270
- return false if t_response.body =~ /#{pat}/
258
+ return false, t_request, t_response if t_response.body =~ /#{pat}/
271
259
  end
272
260
  end
273
261
  end
274
- # if t_request.path_ext != ""
275
- #TODO: Check for custom error pages
276
- # end
277
262
 
278
263
  return true, t_request, t_response
279
264
  rescue => bang
280
265
  end
281
266
  return false, nil, nil
282
267
  end
283
-
268
+
284
269
  def log_console(msg)
285
270
  puts "[#{self}] #{msg}"
286
271
  end
@@ -293,9 +278,9 @@ module Watobo#:nodoc: all
293
278
 
294
279
  def run_checks_UNUSED(chat, opts={})
295
280
  begin
296
- # reset() # reset variables first
281
+ # reset() # reset variables first
297
282
  @@status = :running
298
- check_opts = { :run_passive_checks => false}
283
+ check_opts = {:run_passive_checks => false}
299
284
  check_opts.update opts
300
285
  @settings.update opts
301
286
 
@@ -303,83 +288,36 @@ module Watobo#:nodoc: all
303
288
  # puts @session.to_yaml
304
289
 
305
290
  @@proxy = opts[:proxy] if opts[:proxy]
306
- # @@max_checks = opts[:max_parallel_checks] if opts.has_key? :max_parallel_checks
307
- @@max_checks = Watobo::Conf::Scanner.max_parallel_checks
291
+ # @@max_checks = opts[:max_parallel_checks] if opts.has_key? :max_parallel_checks
292
+ @@max_checks = Watobo::Conf::Scanner.max_parallel_checks
308
293
 
309
294
  do_test(chat) { |request, response|
310
295
  begin
311
-
296
+
312
297
  if request and response then
313
298
  if check_opts[:run_passive_checks] then
314
299
 
315
- nc = Watobo::Chat.new(request, response, :id => 0)
316
- # @project.runPassiveModules(nc)
300
+ nc = Watobo::Chat.new(request, response, :id => 0)
301
+ # @project.runPassiveModules(nc)
317
302
 
318
303
  end
319
304
 
320
305
  end
321
306
  rescue => bang
322
- puts bang
323
- puts bang.backtrace if $DEBUG
307
+ puts bang
308
+ puts bang.backtrace if $DEBUG
324
309
  end
325
310
 
326
311
  }
327
312
 
328
313
  rescue => bang
329
- puts bang
330
- puts bang.backtrace if $DEBUG
314
+ puts bang
315
+ puts bang.backtrace if $DEBUG
331
316
 
332
317
  end
333
318
 
334
319
  end
335
-
336
-
337
- def do_test_UNUSED(chat, &block)
338
- # puts chat.request.site
339
- tlist = []
340
- @inner_pool = []
341
- generateChecks(chat) do |check|
342
- unless @@status == :stopped
343
- @@pool_mutex.synchronize do
344
- while @@check_count > @@max_checks or @@login_in_progress
345
- puts "[#{self.class.to_s.gsub(/Watobo::Modules::Active::/,'')}] do_test on chat [#{chat.id}]: waiting .. #{@@check_count}/#{@@max_checks}" if $DEBUG
346
- @@pool_cv.wait(@@pool_mutex)
347
- end
348
- @@check_count += 1
349
- end
350
-
351
- @inner_pool << Thread.new(check) { |c|
352
- begin
353
320
 
354
- if c.respond_to? :call
355
- request, response = c.call
356
- yield request, response if block_given?
357
-
358
- end
359
- rescue => bang
360
- # puts "!!!ERROR: running check in #{self.class}"
361
- puts bang
362
- puts bang.backtrace if $DEBUG
363
- # raise
364
- ensure
365
-
366
- @@pool_mutex.synchronize do
367
- @@check_count -= 1
368
- notify(:check_finished, self, request, response)
369
- #@inner_pool.delete Thread.current
370
- end
371
- @@pool_cv.signal
372
-
373
- end
374
- }
375
- # puts "[#{self.class.to_s.gsub(/Watobo::Modules::Active::/,'')}] [#{chat.id}]: INNER POOL - #{@inner_pool.length} "
376
- end
377
- end
378
-
379
- @inner_pool.each {|t| t.join }
380
- puts ">>>> #{self.class} on chat[#{chat.id}] ... finished!\n"
381
- end
382
-
383
321
  def check_name
384
322
  info = self.class.instance_variable_get("@info")
385
323
  return nil if info.nil?
@@ -389,7 +327,7 @@ module Watobo#:nodoc: all
389
327
  def initialize(session_name=nil, prefs={})
390
328
  #@project = project
391
329
  super(session_name, prefs)
392
-
330
+
393
331
  @enabled = true
394
332
  # @status = "ready"
395
333
  @counters = Hash.new
@@ -415,7 +353,6 @@ module Watobo#:nodoc: all
415
353
  @checks_cv = ConditionVariable.new
416
354
  @checks_mutex = Mutex.new
417
355
 
418
-
419
356
 
420
357
  end
421
358
  end
@@ -1,61 +1,52 @@
1
- #.
2
- # active_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 ActiveModules
13
- @checks = []
14
- def self.each(&block)
15
- if block_given?
16
- @checks.map{|c| yield c }
17
- end
18
-
19
- end
20
-
21
- def self.to_a
22
- @checks
23
- end
24
-
25
- def self.length
26
- @checks.length
27
- end
28
-
29
- def self.init
30
- @checks = []
31
- active_path = Watobo.active_module_path
32
- Dir["#{active_path}/**"].each do |group|
33
- if File.ftype(group) == "directory"
34
- Dir["#{group}/*.rb"].each do |mod_file|
35
- begin
36
- # module_file = File.join(active_path, group, modules)
37
- mod = File.basename(mod_file)
38
- group_name = File.basename(group)# notify(:logger, LOG_DEBUG, "loading module: #{module_file}")
39
-
40
- require mod_file
41
-
42
- group_class = group_name.slice(0..0).upcase + group_name.slice(1..-1).downcase
43
- #
44
- module_class = mod.slice(0..0).upcase + mod.slice(1..-1).downcase
45
- module_class.sub!(".rb","")
46
-
2
+ module Watobo#:nodoc: all
3
+ class ActiveModules
4
+ @checks = []
5
+ def self.each(&block)
6
+ if block_given?
7
+ @checks.map{|c| yield c }
8
+ end
9
+
10
+ end
11
+
12
+ def self.to_a
13
+ @checks
14
+ end
15
+
16
+ def self.length
17
+ @checks.length
18
+ end
19
+
20
+ def self.init
21
+ @checks = []
22
+ active_path = Watobo.active_module_path
23
+ Dir["#{active_path}/**"].each do |group|
24
+ if File.ftype(group) == "directory"
25
+ Dir["#{group}/*.rb"].each do |mod_file|
26
+ begin
27
+ # module_file = File.join(active_path, group, modules)
28
+ mod = File.basename(mod_file)
29
+ group_name = File.basename(group)# notify(:logger, LOG_DEBUG, "loading module: #{module_file}")
30
+
31
+ require mod_file
32
+
33
+ group_class = group_name.slice(0..0).upcase + group_name.slice(1..-1).downcase
34
+ #
35
+ module_class = mod.slice(0..0).upcase + mod.slice(1..-1).downcase
36
+ module_class.sub!(".rb","")
37
+
47
38
  ac = Watobo::Modules::Active.const_get(group_class).const_get(module_class)
48
- print "."
49
-
50
- @checks << ac
51
- rescue => bang
52
- puts bang
53
- end
54
- end
55
- end
56
- end
57
- @checks
58
- end
59
- end
60
-
39
+ print "."
40
+
41
+ @checks << ac
42
+ rescue => bang
43
+ puts bang
44
+ end
45
+ end
46
+ end
47
+ end
48
+ @checks
49
+ end
50
+ end
51
+
61
52
  end