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
- # http_socket.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
  module HTTPSocket
@@ -116,28 +107,35 @@ module Watobo#:nodoc: all
116
107
 
117
108
  def self.get_ssl_cert_cn( host, port)
118
109
  cn = ""
110
+ # if target is an ip address we use the cn name of the certificate
111
+ # otherwise we return the hostname
112
+ return host unless host =~ /\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/
113
+
119
114
  begin
120
115
  tcp_socket = TCPSocket.new( host, port )
121
116
  tcp_socket.setsockopt( Socket::SOL_SOCKET, Socket::SO_KEEPALIVE, 1)
122
117
  tcp_socket.sync = true
123
118
  ctx = OpenSSL::SSL::SSLContext.new()
119
+ # puts ctx.ciphers
124
120
 
125
121
  ctx.tmp_dh_callback = proc { |*args|
126
122
  OpenSSL::PKey::DH.new(128)
127
123
  }
128
124
 
129
125
  socket = OpenSSL::SSL::SSLSocket.new(tcp_socket, ctx)
126
+ # need hostname for SNI (Server Name Indication)
127
+ # http://en.wikipedia.org/wiki/Server_Name_Indication
128
+ socket.hostname = host
130
129
 
131
130
  socket.connect
132
131
  cert = socket.peer_cert
133
132
 
134
- if cert.subject.to_s =~ /cn=([^\/]*)/i
135
- cn = $1
136
- end
137
- puts "Peer-Cert CN: #{cn}"
133
+ cn = $1 if cert.subject.to_s =~ /cn=([^\/]*)/i
134
+
138
135
  socket.io.shutdown(2)
139
136
  rescue => bang
140
137
  puts bang
138
+ puts ">> #{host}:#{port}"
141
139
  cn = host
142
140
  ensure
143
141
  socket.close if socket.respond_to? :close
@@ -1,140 +1,131 @@
1
- #.
2
- # ntlm_auth.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 HTTPSocket
13
- module NTLMAuth
14
-
15
- def do_ntlm_auth()
16
- response_header = nil
17
-
18
- auth_request = @request.copy
19
-
20
- ntlm_challenge = nil
21
- t1 = Watobo::NTLM::Message::Type1.new()
22
- msg = "NTLM " + t1.encode64
23
-
24
- auth_request.removeHeader("Connection")
25
- auth_request.removeHeader("Authorization")
26
-
27
- auth_request.addHeader("Authorization", msg)
28
- auth_request.addHeader("Connection", "Keep-Alive")
29
-
30
- if $DEBUG
31
- puts "============= T1 ======================="
32
- puts auth_request
33
- end
34
-
35
- data = auth_request.join + "\r\n"
36
- @connection.send data
37
-
38
- puts "-----------------" if $DEBUG
39
-
40
- response_header = []
41
- rcode = nil
42
- clen = nil
43
- ntlm_challenge = nil
44
- response_header = connection.read_header
45
- response_header.each do |line|
46
- if line =~ /^HTTP\/\d\.\d (\d+) (.*)/ then
47
- rcode = $1.to_i
48
- rmsg = $2
49
- end
50
- if line =~ /^WWW-Authenticate: (NTLM) (.+)\r\n/
51
- ntlm_challenge = $2
52
- end
53
- if line =~ /^Content-Length: (\d{1,})\r\n/
54
- clen = $1.to_i
55
- end
56
- break if line.strip.empty?
57
- end
58
- # puts "==================="
59
-
60
- if $DEBUG
61
- puts "--- T1 RESPONSE HEADERS ---"
62
- puts response_header
63
- puts "---"
64
- end
65
-
66
- if rcode == 401 #Authentication Required
67
- puts "[NTLM] got ntlm challenge: #{ntlm_challenge}" if $DEBUG
68
- return socket, response_header if ntlm_challenge.nil?
69
- elsif rcode == 200 # Ok
70
- puts "[NTLM] seems request doesn't need authentication" if $DEBUG
71
- return socket, Watobo::Response.new(response_header)
72
- else
73
- if $DEBUG
74
- puts "[NTLM] ... !#*+.!*peep* ...."
75
- puts response_header
76
- end
77
- return socket, Watobo::Response.new(response_header)
78
- end
79
-
80
- # reading rest of response
81
- rest = ''
82
- Watobo::HTTPSocket.read_body(socket, :max_bytes => clen){ |d|
83
- rest += d
84
- }
85
-
86
- if $DEBUG
87
- puts "--- T1 RESPONSE BODY ---"
88
- puts rest
89
- puts "---"
90
- end
91
- t2 = Watobo::NTLM::Message.decode64(ntlm_challenge)
92
- t3 = t2.response({:user => ntlm_credentials[:username],
93
- :password => ntlm_credentials[:password],
94
- :domain => ntlm_credentials[:domain]},
95
- {:workstation => ntlm_credentials[:workstation], :ntlmv2 => true})
96
-
97
- # puts "* NTLM-Credentials: #{ntlm_credentials[:username]},#{ntlm_credentials[:password]}, #{ntlm_credentials[:domain]}, #{ntlm_credentials[:workstation]}"
98
- auth_request.removeHeader("Authorization")
99
- auth_request.removeHeader("Connection")
100
-
101
- # auth_request.addHeader("Connection", "Close")
102
-
103
- msg = "NTLM " + t3.encode64
104
- auth_request.addHeader("Authorization", msg)
105
- # puts "============= T3 ======================="
106
-
107
- data = auth_request.join + "\r\n"
108
-
109
- if $DEBUG
110
- puts "= NTLM Type 3 ="
111
- puts data
112
- end
113
- @connection.send data
114
-
115
- response_header = []
116
- response_header = connection.header
117
- response_header.each do |line|
118
-
119
- if line =~ /^HTTP\/\d\.\d (\d+) (.*)/ then
120
- rcode = $1.to_i
121
- rmsg = $2
122
- end
123
- break if line.strip.empty?
124
- end
125
-
126
- if rcode == 200 # Ok
127
- puts "[NTLM] Authentication Successfull" if $DEBUG
128
- elsif rcode == 401 # Authentication Required
129
- # TODO: authorization didn't work -> do some notification
130
- # ...
131
- puts "[NTLM] could not authenticate. Bad credentials?"
132
- puts ntlm_credentials.to_yaml
133
- end
134
-
135
- return socket, Watobo::Response.new(response_header)
136
-
137
- end
138
- end
139
- end
2
+ module Watobo#:nodoc: all
3
+ module HTTPSocket
4
+ module NTLMAuth
5
+
6
+ def do_ntlm_auth()
7
+ response_header = nil
8
+
9
+ auth_request = @request.copy
10
+
11
+ ntlm_challenge = nil
12
+ t1 = Watobo::NTLM::Message::Type1.new()
13
+ msg = "NTLM " + t1.encode64
14
+
15
+ auth_request.removeHeader("Connection")
16
+ auth_request.removeHeader("Authorization")
17
+
18
+ auth_request.addHeader("Authorization", msg)
19
+ auth_request.addHeader("Connection", "Keep-Alive")
20
+
21
+ if $DEBUG
22
+ puts "============= T1 ======================="
23
+ puts auth_request
24
+ end
25
+
26
+ data = auth_request.join + "\r\n"
27
+ @connection.send data
28
+
29
+ puts "-----------------" if $DEBUG
30
+
31
+ response_header = []
32
+ rcode = nil
33
+ clen = nil
34
+ ntlm_challenge = nil
35
+ response_header = connection.read_header
36
+ response_header.each do |line|
37
+ if line =~ /^HTTP\/\d\.\d (\d+) (.*)/ then
38
+ rcode = $1.to_i
39
+ rmsg = $2
40
+ end
41
+ if line =~ /^WWW-Authenticate: (NTLM) (.+)\r\n/
42
+ ntlm_challenge = $2
43
+ end
44
+ if line =~ /^Content-Length: (\d{1,})\r\n/
45
+ clen = $1.to_i
46
+ end
47
+ break if line.strip.empty?
48
+ end
49
+ # puts "==================="
50
+
51
+ if $DEBUG
52
+ puts "--- T1 RESPONSE HEADERS ---"
53
+ puts response_header
54
+ puts "---"
55
+ end
56
+
57
+ if rcode == 401 #Authentication Required
58
+ puts "[NTLM] got ntlm challenge: #{ntlm_challenge}" if $DEBUG
59
+ return socket, response_header if ntlm_challenge.nil?
60
+ elsif rcode == 200 # Ok
61
+ puts "[NTLM] seems request doesn't need authentication" if $DEBUG
62
+ return socket, Watobo::Response.new(response_header)
63
+ else
64
+ if $DEBUG
65
+ puts "[NTLM] ... !#*+.!*peep* ...."
66
+ puts response_header
67
+ end
68
+ return socket, Watobo::Response.new(response_header)
69
+ end
70
+
71
+ # reading rest of response
72
+ rest = ''
73
+ Watobo::HTTPSocket.read_body(socket, :max_bytes => clen){ |d|
74
+ rest += d
75
+ }
76
+
77
+ if $DEBUG
78
+ puts "--- T1 RESPONSE BODY ---"
79
+ puts rest
80
+ puts "---"
81
+ end
82
+ t2 = Watobo::NTLM::Message.decode64(ntlm_challenge)
83
+ t3 = t2.response({:user => ntlm_credentials[:username],
84
+ :password => ntlm_credentials[:password],
85
+ :domain => ntlm_credentials[:domain]},
86
+ {:workstation => ntlm_credentials[:workstation], :ntlmv2 => true})
87
+
88
+ # puts "* NTLM-Credentials: #{ntlm_credentials[:username]},#{ntlm_credentials[:password]}, #{ntlm_credentials[:domain]}, #{ntlm_credentials[:workstation]}"
89
+ auth_request.removeHeader("Authorization")
90
+ auth_request.removeHeader("Connection")
91
+
92
+ # auth_request.addHeader("Connection", "Close")
93
+
94
+ msg = "NTLM " + t3.encode64
95
+ auth_request.addHeader("Authorization", msg)
96
+ # puts "============= T3 ======================="
97
+
98
+ data = auth_request.join + "\r\n"
99
+
100
+ if $DEBUG
101
+ puts "= NTLM Type 3 ="
102
+ puts data
103
+ end
104
+ @connection.send data
105
+
106
+ response_header = []
107
+ response_header = connection.header
108
+ response_header.each do |line|
109
+
110
+ if line =~ /^HTTP\/\d\.\d (\d+) (.*)/ then
111
+ rcode = $1.to_i
112
+ rmsg = $2
113
+ end
114
+ break if line.strip.empty?
115
+ end
116
+
117
+ if rcode == 200 # Ok
118
+ puts "[NTLM] Authentication Successfull" if $DEBUG
119
+ elsif rcode == 401 # Authentication Required
120
+ # TODO: authorization didn't work -> do some notification
121
+ # ...
122
+ puts "[NTLM] could not authenticate. Bad credentials?"
123
+ puts ntlm_credentials.to_yaml
124
+ end
125
+
126
+ return socket, Watobo::Response.new(response_header)
127
+
128
+ end
129
+ end
130
+ end
140
131
  end
@@ -1,21 +1,12 @@
1
- #.
2
- # utils.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 Utils
13
- utils_path = File.expand_path(File.join(File.dirname(__FILE__), "utils"))
14
- #puts "* loading utils #{utils_path}"
15
- Dir.glob("#{utils_path}/*.rb").each do |cf|
16
- puts "+ #{File.basename(cf)}" if $DEBUG
17
- require File.join("watobo","utils", File.basename(cf))
18
-
19
- end
20
- end
2
+ module Watobo#:nodoc: all
3
+ module Utils
4
+ utils_path = File.expand_path(File.join(File.dirname(__FILE__), "utils"))
5
+ #puts "* loading utils #{utils_path}"
6
+ Dir.glob("#{utils_path}/*.rb").each do |cf|
7
+ puts "+ #{File.basename(cf)}" if $DEBUG
8
+ require File.join("watobo","utils", File.basename(cf))
9
+
10
+ end
11
+ end
21
12
  end
@@ -1,12 +1,3 @@
1
- #.
2
- # check_regex.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
  module Utils
@@ -1,12 +1,3 @@
1
- #.
2
- # copy_object.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
  module Utils
@@ -1,12 +1,3 @@
1
- #.
2
- # crypto.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
  require 'openssl'
11
2
  require 'digest/sha1'
12
3
  require 'base64'
@@ -1,34 +1,25 @@
1
- #.
2
- # expand_range.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 Utils
13
- # expand range creates an array out of
14
- def self.expand_range(pattern)
15
- vals = pattern.split(",")
16
-
17
- result = []
18
- vals.each do |v|
19
- v.strip!
20
- if v =~ /^(\d+)$/ then
21
- result.push $1.to_i
22
- elsif v =~ /^(\d+)-(\d+)$/
23
- start = $1
24
- stop = $2
25
- dummy = (start..stop).to_a
26
- result.concat dummy
27
- end
28
- end
29
- result.uniq!
30
- return result
31
- end
32
-
33
- end
2
+ module Watobo#:nodoc: all
3
+ module Utils
4
+ # expand range creates an array out of
5
+ def self.expand_range(pattern)
6
+ vals = pattern.split(",")
7
+
8
+ result = []
9
+ vals.each do |v|
10
+ v.strip!
11
+ if v =~ /^(\d+)$/ then
12
+ result.push $1.to_i
13
+ elsif v =~ /^(\d+)-(\d+)$/
14
+ start = $1
15
+ stop = $2
16
+ dummy = (start..stop).to_a
17
+ result.concat dummy
18
+ end
19
+ end
20
+ result.uniq!
21
+ return result
22
+ end
23
+
24
+ end
34
25
  end