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