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,35 +1,106 @@
1
- #.
2
- # client_cert_store.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
- @private
11
- module Watobo#:nodoc: all
12
- module ClientCertStore#:nodoc: all
13
- @client_certs = {}
14
-
15
- # :ssl_client_cert
16
- # :ssl_client_key
17
- # :extra_chain_certs
18
-
19
- def self.clear
20
- @client_certs.clear
21
- end
22
-
23
- def self.set( site, cert )
24
- return false if cert.nil?
25
- @client_certs[ site.to_sym ] = cert
26
- true
27
- end
28
-
29
- def self.get( site )
30
- return nil unless @client_certs.has_key? site.to_sym
31
- @client_certs[ site.to_sym ]
32
- end
33
-
34
- end
35
- end
1
+ # @private
2
+ module Watobo#:nodoc: all
3
+ module ClientCertStore#:nodoc: all
4
+ @client_certs = {}
5
+ @project = nil
6
+
7
+ # :ssl_client_cert
8
+ # :ssl_client_key
9
+ # :extra_chain_certs
10
+
11
+ def self.clear
12
+ @client_certs.clear
13
+ end
14
+
15
+ def self.add_pem( site, cert_file, key_file, password=nil)
16
+ cinfo = { :type => :pem,
17
+ :certificate_file => cert_file,
18
+ :key_file => key_file,
19
+ :password => password
20
+ }
21
+ begin
22
+ cinfo[:ssl_client_cert] = OpenSSL::X509::Certificate.new(File.read(cert_file))
23
+ cinfo[:ssl_client_key] = OpenSSL::PKey::RSA.new(File.read(key_file))
24
+ @client_certs[site] = cinfo
25
+ return false
26
+ rescue => bang
27
+ puts bang
28
+ end
29
+ false
30
+
31
+ end
32
+
33
+ def self.add_pkcs12( site, cert_file, password=nil )
34
+ cinfo = { :type => :pkcs12,
35
+ :certificate_file => cert_file,
36
+ :password => password
37
+ }
38
+ begin
39
+ p12 = OpenSSL::PKCS12.new( File.read(cert_file), password)
40
+ cinfo[:ssl_client_cert] = p12.certificate
41
+ cinfo[:ssl_client_key] = p12.key
42
+ cinfo[:extra_chain_certs] = p12.ca_certs
43
+
44
+ @client_certs[site] = cinfo
45
+ return true
46
+ rescue => bang
47
+ puts bang
48
+ end
49
+ false
50
+
51
+ end
52
+
53
+ def self.set( site, cert )
54
+ return false if cert.nil?
55
+ @client_certs[ site.to_sym ] = cert
56
+ save
57
+ true
58
+ end
59
+
60
+ def self.certs
61
+ Marshal::load(Marshal::dump(@client_certs))
62
+ end
63
+
64
+ def self.certs=(client_certs)
65
+ @client_certs = client_certs
66
+ end
67
+
68
+ def self.get( site )
69
+ return nil unless @client_certs.has_key? site.to_sym
70
+ @client_certs[ site.to_sym ]
71
+ end
72
+
73
+ def self.load
74
+ certs = Watobo::DataStore.load_project_settings('ClientCertStore')
75
+ return false if certs.nil?
76
+ @client_certs = certs
77
+ @client_certs.each do |site, cinfo|
78
+ begin
79
+ case cinfo[:type]
80
+ when :pem
81
+ add_pem(site, cinfo[:certificate_file], cinfo[:key_file], cinfo[:password])
82
+ when :pkcs12
83
+ add_pkcs12(site, cinfo[:certificate_file], cinfo[:password])
84
+ end
85
+
86
+ rescue => bang
87
+ puts bang
88
+ puts bang.backtrace
89
+ end
90
+ end
91
+ end
92
+
93
+ def self.save
94
+ out = {}
95
+ @client_certs.each do |site, cinfo|
96
+ data = {}
97
+ [:certificate_file, :key_file, :type ].each do |k|
98
+ data[k] = cinfo[k]
99
+ end
100
+ out[site] = data
101
+ end
102
+ Watobo::DataStore.save_project_settings('ClientCertStore', out)
103
+ end
104
+
105
+ end
106
+ end
@@ -1,59 +1,50 @@
1
- #.
2
- # conversation.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 Conversation
13
- include Watobo::Constants
14
- attr_accessor :file
15
- def id()
16
- # must be defined
17
- end
18
-
19
- def copyRequest()
20
- # req_copy = []
21
- # self.request.each do |line|
22
- # req_copy.push line.clone
23
- # end
24
- orig = Utils.copyObject(@request)
25
- # now extend the new request with the Watobo mixins
26
- #copy.extend Watobo::Mixin::Parser::Url
27
- #copy.extend Watobo::Mixin::Parser::Web10
28
- #copy.extend Watobo::Mixin::Shaper::Web10
29
- copy = Watobo::Request.new(orig)
30
- return copy
31
- end
32
-
33
- private
34
-
35
- # def extendRequest
36
- # @request.extend Watobo::Mixin::Shaper::Web10
37
- # @request.extend Watobo::Mixin::Parser::Web10
38
- # @request.extend Watobo::Mixin::Parser::Url
39
- # end
40
-
41
- # def extendResponse
42
- # @response.extend Watobo::Mixin::Parser::Web10
43
- # end
44
-
45
- def initialize(request, response)
46
- @request = Watobo::Request.new request
47
- @response = Watobo::Response.new response
48
- @file = nil
49
-
50
- # extendRequest()
51
- # extendResponse()
52
- #Watobo::Request.create @request
53
- #Watobo::Response.create @response
54
-
55
- end
56
-
57
- end
58
-
2
+ module Watobo#:nodoc: all
3
+ class Conversation
4
+ include Watobo::Constants
5
+ attr_accessor :file
6
+ def id()
7
+ # must be defined
8
+ end
9
+
10
+ def copyRequest()
11
+ # req_copy = []
12
+ # self.request.each do |line|
13
+ # req_copy.push line.clone
14
+ # end
15
+ orig = Utils.copyObject(@request)
16
+ # now extend the new request with the Watobo mixins
17
+ #copy.extend Watobo::Mixin::Parser::Url
18
+ #copy.extend Watobo::Mixin::Parser::Web10
19
+ #copy.extend Watobo::Mixin::Shaper::Web10
20
+ copy = Watobo::Request.new(orig)
21
+ return copy
22
+ end
23
+
24
+ private
25
+
26
+ # def extendRequest
27
+ # @request.extend Watobo::Mixin::Shaper::Web10
28
+ # @request.extend Watobo::Mixin::Parser::Web10
29
+ # @request.extend Watobo::Mixin::Parser::Url
30
+ # end
31
+
32
+ # def extendResponse
33
+ # @response.extend Watobo::Mixin::Parser::Web10
34
+ # end
35
+
36
+ def initialize(request, response)
37
+ @request = Watobo::Request.new request
38
+ @response = Watobo::Response.new response
39
+ @file = nil
40
+
41
+ # extendRequest()
42
+ # extendResponse()
43
+ #Watobo::Request.create @request
44
+ #Watobo::Response.create @response
45
+
46
+ end
47
+
48
+ end
49
+
59
50
  end
@@ -1,27 +1,18 @@
1
- #.
2
- # cookie.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
- #Set-Cookie: mycookie=b41dc9e55d6163f78321996b10c940edcec1b4e55a76464c4e9d25e160ac0ec5b769806b; path=/; secure
14
- class Cookie < Parameter
15
-
16
- attr :name
17
- attr :value
18
- attr :path
19
- attr :secure
20
- attr :http_only
2
+ module Watobo#:nodoc: all
3
+
4
+ #Set-Cookie: mycookie=b41dc9e55d6163f78321996b10c940edcec1b4e55a76464c4e9d25e160ac0ec5b769806b; path=/; secure
5
+ class Cookie < Parameter
6
+
7
+ attr :name
8
+ attr :value
9
+ attr :path
10
+ attr :secure
11
+ attr :http_only
21
12
 
22
- def to_s
23
- "#{@name}=#{@value}"
24
- end
13
+ def to_s
14
+ "#{@name}=#{@value}"
15
+ end
25
16
 
26
17
  def initialize(prefs)
27
18
  @secure = false
@@ -46,14 +37,14 @@ module Watobo#:nodoc: all
46
37
  @path = m.nil? ? "" : m[1].strip
47
38
  @secure = true if chunks.select{|c| c =~ /Secure/i }
48
39
  @http_only = true if chunks.select{|c| c =~ /HttpOnly/i }
49
- end
50
-
51
- #if prefs.is_a? Hash
52
- # #TODO: create cookie with hash-settings
53
- # else
54
- # raise ArgumentError, "Need hash (:name, :value, ...) or string (Set-Cookie:...)"
55
- #end
56
- end
57
-
58
- end
40
+ end
41
+
42
+ #if prefs.is_a? Hash
43
+ # #TODO: create cookie with hash-settings
44
+ # else
45
+ # raise ArgumentError, "Need hash (:name, :value, ...) or string (Set-Cookie:...)"
46
+ #end
47
+ end
48
+
49
+ end
59
50
  end
@@ -0,0 +1,98 @@
1
+ # @private
2
+ module Watobo#:nodoc: all
3
+
4
+ module EgressHandlers
5
+
6
+ CONFIG_FILE = 'egress_config.yml'
7
+ MAX_HISTORY = 5
8
+
9
+ @handlers = {}
10
+ @history = []
11
+ @last = nil
12
+ def self.list(&block)
13
+ @handlers.each_key do |name|
14
+ yield name if block_given?
15
+ end
16
+ @handlers.each_key.to_a
17
+ end
18
+
19
+ def self.add(file)
20
+ load file
21
+ update
22
+ save_config
23
+ end
24
+
25
+ def self.last
26
+ @last
27
+ end
28
+
29
+ def self.last=(name)
30
+ @last = name
31
+ save_config
32
+ end
33
+
34
+ def self.create(name)
35
+ # puts "create egress-handler #{name}"
36
+ fkey = name.to_sym
37
+ return nil unless @handlers.has_key? fkey
38
+ @handlers[fkey].new()
39
+ end
40
+
41
+ def self.update
42
+ constants.each do |name|
43
+ next if name == :CONFIG_FILE
44
+ next if name == :MAX_HISTORY
45
+ h = class_eval(name.to_s)
46
+ h_name = h.name.gsub(/.*::/, '').to_sym
47
+ @handlers[h_name] = h
48
+ end
49
+ end
50
+
51
+ def self.length
52
+ @handlers.length
53
+ end
54
+
55
+ def self.reload
56
+ @history.each do |file|
57
+ load file
58
+ end
59
+ end
60
+
61
+ def self.load(file)
62
+ begin
63
+ Kernel.load file
64
+ @history << file
65
+ @history.uniq!
66
+ @history.shift if @history.length > MAX_HISTORY
67
+
68
+ rescue SyntaxError => bang
69
+ puts bang
70
+ puts bang.backtrace
71
+ end
72
+
73
+ end
74
+
75
+ def self.init
76
+ @cfg_file = File.join Watobo.working_directory, 'conf', CONFIG_FILE
77
+ load_config
78
+ end
79
+
80
+ def self.load_config
81
+ cfg = Watobo::DataStore.load_project_settings(self.name.gsub(/^.*::/,''))
82
+ return false if cfg.nil?
83
+ @last = cfg[:last]
84
+ @history = cfg[:history]
85
+ reload
86
+ update
87
+ end
88
+
89
+ def self.save_config
90
+ cfg = { :last => @last,
91
+ :history => @history
92
+ }
93
+ Watobo::DataStore.save_project_settings(self.name.gsub(/^.*::/,''), cfg)
94
+
95
+ end
96
+
97
+ end
98
+ end
@@ -1,50 +1,41 @@
1
- #.
2
- # finding.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 Finding < Conversation
13
-
14
- @@numFindings = 0
15
- @@max_id = 0
16
-
17
- @@lock = Mutex.new
18
-
19
- attr :details
20
- attr :request
21
- attr :response
22
- def resetCounters()
23
- @@numFindings = 0
24
- @@max_id = 0
25
- end
26
-
27
- def id()
28
- @details[:id]
29
- end
30
-
31
- def false_positive?
32
- @details[:false_positive]
33
- end
34
-
35
- def set_false_positive
36
- @details[:false_positive] = true
37
- end
38
-
39
- def unset_false_positive
40
- @details[:false_positive] = false
41
- end
42
-
43
- def method_missing(name, *args, &block)
44
- if @details.has_key? name
45
- return @details[name]
46
- end
47
- super
2
+ module Watobo#:nodoc: all
3
+ class Finding < Conversation
4
+
5
+ @@numFindings = 0
6
+ @@max_id = 0
7
+
8
+ @@lock = Mutex.new
9
+
10
+ attr :details
11
+ attr :request
12
+ attr :response
13
+ def resetCounters()
14
+ @@numFindings = 0
15
+ @@max_id = 0
16
+ end
17
+
18
+ def id()
19
+ @details[:id]
20
+ end
21
+
22
+ def false_positive?
23
+ @details[:false_positive]
24
+ end
25
+
26
+ def set_false_positive
27
+ @details[:false_positive] = true
28
+ end
29
+
30
+ def unset_false_positive
31
+ @details[:false_positive] = false
32
+ end
33
+
34
+ def method_missing(name, *args, &block)
35
+ if @details.has_key? name
36
+ return @details[name]
37
+ end
38
+ super
48
39
  end
49
40
 
50
41
  def to_h
@@ -52,33 +43,33 @@ module Watobo#:nodoc: all
52
43
  h[:request] = @request.to_a
53
44
  h[:response] = @response.to_a
54
45
  h
55
- end
56
-
57
- def initialize(request, response, details = {})
58
- super(request, response)
59
- @details = {
60
- :id => -1,
61
- :comment => '',
62
- :false_positive => false # FalsePositive
63
- }
64
-
65
- @details.update details if details.is_a? Hash
66
-
67
- @@lock.synchronize{
68
- # enter critical section here ???
69
- if @details[:id] > 0 and @details[:id] > @@max_id
70
- @@max_id = @details[:id]
71
- elsif @details[:id] < 0
72
- @@max_id += 1
73
- @details[:id] = @@max_id
74
- end
75
- @@numFindings += 1
76
-
77
- }
78
- # extendRequest()
79
- # extendResponse()
80
-
81
- end
82
-
83
- end
46
+ end
47
+
48
+ def initialize(request, response, details = {})
49
+ super(request, response)
50
+ @details = {
51
+ :id => -1,
52
+ :comment => '',
53
+ :false_positive => false # FalsePositive
54
+ }
55
+
56
+ @details.update details if details.is_a? Hash
57
+
58
+ @@lock.synchronize{
59
+ # enter critical section here ???
60
+ if @details[:id] > 0 and @details[:id] > @@max_id
61
+ @@max_id = @details[:id]
62
+ elsif @details[:id] < 0
63
+ @@max_id += 1
64
+ @details[:id] = @@max_id
65
+ end
66
+ @@numFindings += 1
67
+
68
+ }
69
+ # extendRequest()
70
+ # extendResponse()
71
+
72
+ end
73
+
74
+ end
84
75
  end