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.
- checksums.yaml +7 -0
- data/CHANGELOG.md +46 -1
- data/bin/nfq_server.rb +0 -9
- data/bin/watobo_gui.rb +3 -13
- data/custom-views/prettify-json.rb +9 -18
- data/icons/watobo.ico +0 -0
- data/icons/watobo.ico.old +0 -0
- data/lib/watobo.rb +10 -19
- data/lib/watobo/adapters.rb +5 -14
- data/lib/watobo/adapters/data_store.rb +50 -59
- data/lib/watobo/adapters/file/file_store.rb +287 -296
- data/lib/watobo/adapters/file/marshal_store.rb +293 -296
- data/lib/watobo/adapters/session_store.rb +5 -14
- data/lib/watobo/ca.rb +1 -10
- data/lib/watobo/config.rb +197 -206
- data/lib/watobo/constants.rb +0 -9
- data/lib/watobo/core.rb +3 -12
- data/lib/watobo/core/active_check.rb +72 -135
- data/lib/watobo/core/active_checks.rb +49 -58
- data/lib/watobo/core/ca.rb +369 -389
- data/lib/watobo/core/cert_store.rb +34 -43
- data/lib/watobo/core/chat.rb +92 -101
- data/lib/watobo/core/chats.rb +271 -280
- data/lib/watobo/core/client_cert_store.rb +106 -35
- data/lib/watobo/core/conversation.rb +48 -57
- data/lib/watobo/core/cookie.rb +23 -32
- data/lib/watobo/core/egress_handlers.rb +98 -0
- data/lib/watobo/core/finding.rb +66 -75
- data/lib/watobo/core/findings.rb +107 -114
- data/lib/watobo/core/forwarding_proxy.rb +13 -22
- data/lib/watobo/core/fuzz_gen.rb +0 -9
- data/lib/watobo/core/intercept_carver.rb +166 -177
- data/lib/watobo/core/intercept_filter.rb +235 -244
- data/lib/watobo/core/interceptor.rb +98 -107
- data/lib/watobo/core/min_class.rb +4 -13
- data/lib/watobo/core/netfilter_queue.rb +170 -179
- data/lib/watobo/core/ott_cache.rb +132 -141
- data/lib/watobo/core/parameter.rb +43 -52
- data/lib/watobo/core/passive_check.rb +103 -102
- data/lib/watobo/core/passive_checks.rb +48 -57
- data/lib/watobo/core/passive_scanner.rb +54 -55
- data/lib/watobo/core/plugin.rb +11 -20
- data/lib/watobo/core/project.rb +3 -9
- data/lib/watobo/core/proxy.rb +43 -52
- data/lib/watobo/core/request.rb +125 -123
- data/lib/watobo/core/response.rb +44 -53
- data/lib/watobo/core/scanner.rb +0 -9
- data/lib/watobo/core/scanner3.rb +405 -414
- data/lib/watobo/core/scope.rb +83 -92
- data/lib/watobo/core/session.rb +1043 -1026
- data/lib/watobo/core/sid_cache.rb +98 -107
- data/lib/watobo/core/subscriber.rb +25 -34
- data/lib/watobo/defaults.rb +21 -30
- data/lib/watobo/external/diff/lcs.rb +0 -9
- data/lib/watobo/external/diff/lcs/array.rb +0 -9
- data/lib/watobo/external/diff/lcs/block.rb +0 -9
- data/lib/watobo/external/diff/lcs/callbacks.rb +0 -9
- data/lib/watobo/external/diff/lcs/change.rb +0 -9
- data/lib/watobo/external/diff/lcs/hunk.rb +0 -9
- data/lib/watobo/external/diff/lcs/ldiff.rb +0 -9
- data/lib/watobo/external/diff/lcs/string.rb +0 -9
- data/lib/watobo/externals.rb +6 -15
- data/lib/watobo/framework.rb +4 -13
- data/lib/watobo/framework/create_project.rb +60 -69
- data/lib/watobo/framework/init.rb +0 -9
- data/lib/watobo/framework/init_modules.rb +0 -9
- data/lib/watobo/framework/license_text.rb +28 -37
- data/lib/watobo/framework/load_chat.rb +13 -22
- data/lib/watobo/gui.rb +132 -123
- data/lib/watobo/gui/about_watobo.rb +0 -9
- data/lib/watobo/gui/browser_preview.rb +0 -9
- data/lib/watobo/gui/certificate_dialog.rb +0 -9
- data/lib/watobo/gui/chat_diff.rb +0 -9
- data/lib/watobo/gui/chatviewer_frame.rb +73 -72
- data/lib/watobo/gui/checkboxtree.rb +0 -9
- data/lib/watobo/gui/checks_policy_frame.rb +0 -9
- data/lib/watobo/gui/client_cert_dialog.rb +96 -87
- data/lib/watobo/gui/confirm_scan_dialog.rb +0 -9
- data/lib/watobo/gui/conversation_table.rb +158 -164
- data/lib/watobo/gui/conversation_table_ctrl.rb +207 -216
- data/lib/watobo/gui/conversation_table_ctrl2.rb +373 -382
- data/lib/watobo/gui/csrf_token_dialog.rb +0 -9
- data/lib/watobo/gui/custom_viewer.rb +374 -383
- data/lib/watobo/gui/dashboard.rb +296 -303
- data/lib/watobo/gui/define_scope_frame.rb +0 -9
- data/lib/watobo/gui/differ_frame.rb +215 -224
- data/lib/watobo/gui/edit_comment.rb +0 -9
- data/lib/watobo/gui/edit_scope_dialog.rb +0 -9
- data/lib/watobo/gui/export_dialog.rb +104 -113
- data/lib/watobo/gui/finding_info.rb +0 -9
- data/lib/watobo/gui/findings_tree.rb +210 -217
- data/lib/watobo/gui/full_scan_dialog.rb +0 -9
- data/lib/watobo/gui/fuzzer_gui.rb +1295 -1313
- data/lib/watobo/gui/fxsave_thread.rb +14 -0
- data/lib/watobo/gui/goto_url_dialog.rb +70 -79
- data/lib/watobo/gui/hex_viewer.rb +0 -9
- data/lib/watobo/gui/html_viewer.rb +287 -296
- data/lib/watobo/gui/intercept_filter_dialog.rb +188 -197
- data/lib/watobo/gui/interceptor_gui.rb +1041 -1051
- data/lib/watobo/gui/interceptor_settings_dialog.rb +0 -9
- data/lib/watobo/gui/json_viewer.rb +287 -0
- data/lib/watobo/gui/list_box.rb +101 -110
- data/lib/watobo/gui/log_file_viewer.rb +32 -41
- data/lib/watobo/gui/log_viewer.rb +83 -88
- data/lib/watobo/gui/login_wizzard.rb +0 -9
- data/lib/watobo/gui/main_window.rb +587 -618
- data/lib/watobo/gui/manual_request_editor.rb +620 -565
- data/lib/watobo/gui/master_pw_dialog.rb +0 -9
- data/lib/watobo/gui/mixins/gui_settings.rb +29 -38
- data/lib/watobo/gui/page_tree.rb +217 -226
- data/lib/watobo/gui/password_policy_dialog.rb +0 -9
- data/lib/watobo/gui/plugin_board.rb +0 -9
- data/lib/watobo/gui/preferences_dialog.rb +0 -9
- data/lib/watobo/gui/progress_window.rb +17 -27
- data/lib/watobo/gui/project_wizzard.rb +0 -9
- data/lib/watobo/gui/proxy_dialog.rb +1 -10
- data/lib/watobo/gui/quick_scan_dialog.rb +0 -9
- data/lib/watobo/gui/request_builder_frame.rb +102 -111
- data/lib/watobo/gui/request_editor.rb +181 -137
- data/lib/watobo/gui/rewrite_filters_dialog.rb +394 -403
- data/lib/watobo/gui/rewrite_rules_dialog.rb +372 -381
- data/lib/watobo/gui/save_chat_dialog.rb +140 -149
- data/lib/watobo/gui/scanner_settings_dialog.rb +0 -9
- data/lib/watobo/gui/select_chat_dialog.rb +0 -9
- data/lib/watobo/gui/session_management_dialog.rb +0 -9
- data/lib/watobo/gui/sites_tree.rb +0 -9
- data/lib/watobo/gui/status_bar.rb +0 -9
- data/lib/watobo/gui/table_editor.rb +0 -9
- data/lib/watobo/gui/tagless_viewer.rb +0 -9
- data/lib/watobo/gui/templates/plugin.rb +0 -9
- data/lib/watobo/gui/templates/plugin2.rb +92 -100
- data/lib/watobo/gui/templates/plugin_base.rb +144 -153
- data/lib/watobo/gui/text_viewer.rb +0 -9
- data/lib/watobo/gui/transcoder_window.rb +0 -9
- data/lib/watobo/gui/utils/gui_utils.rb +0 -9
- data/lib/watobo/gui/utils/init_icons.rb +86 -95
- data/lib/watobo/gui/utils/load_icons.rb +33 -42
- data/lib/watobo/gui/utils/load_plugins.rb +116 -119
- data/lib/watobo/gui/utils/master_password.rb +68 -77
- data/lib/watobo/gui/utils/save_default_settings.rb +113 -122
- data/lib/watobo/gui/utils/save_project_settings.rb +0 -9
- data/lib/watobo/gui/utils/save_proxy_settings.rb +41 -50
- data/lib/watobo/gui/utils/save_scanner_settings.rb +18 -27
- data/lib/watobo/gui/utils/session_history.rb +112 -121
- data/lib/watobo/gui/workspace_dialog.rb +0 -9
- data/lib/watobo/gui/www_auth_dialog.rb +0 -9
- data/lib/watobo/gui/xml_viewer_frame.rb +0 -9
- data/lib/watobo/http.rb +4 -13
- data/lib/watobo/http/cookies/cookies.rb +26 -35
- data/lib/watobo/http/data/data.rb +45 -54
- data/lib/watobo/http/data/json.rb +47 -55
- data/lib/watobo/http/url/url.rb +38 -47
- data/lib/watobo/http/xml/xml.rb +124 -130
- data/lib/watobo/interceptor.rb +3 -12
- data/lib/watobo/interceptor/proxy.rb +742 -739
- data/lib/watobo/interceptor/transparent.rb +22 -24
- data/lib/watobo/mixins.rb +10 -19
- data/lib/watobo/mixins/check_info.rb +27 -36
- data/lib/watobo/mixins/httpparser.rb +613 -637
- data/lib/watobo/mixins/request_parser.rb +88 -97
- data/lib/watobo/mixins/shapers.rb +515 -529
- data/lib/watobo/mixins/transcoders.rb +3 -11
- data/lib/watobo/parser.rb +1 -10
- data/lib/watobo/parser/html.rb +83 -92
- data/lib/watobo/patch_fxruby_setfocus.rb +26 -0
- data/lib/watobo/sockets.rb +3 -12
- data/lib/watobo/sockets/agent.rb +828 -837
- data/lib/watobo/sockets/client_socket.rb +308 -312
- data/lib/watobo/sockets/connection.rb +401 -410
- data/lib/watobo/sockets/http_socket.rb +11 -13
- data/lib/watobo/sockets/ntlm_auth.rb +129 -138
- data/lib/watobo/utils.rb +10 -19
- data/lib/watobo/utils/check_regex.rb +0 -9
- data/lib/watobo/utils/copy_object.rb +0 -9
- data/lib/watobo/utils/crypto.rb +0 -9
- data/lib/watobo/utils/expand_range.rb +23 -32
- data/lib/watobo/utils/export_xml.rb +97 -106
- data/lib/watobo/utils/file_management.rb +9 -11
- data/lib/watobo/utils/hexprint.rb +9 -18
- data/lib/watobo/utils/load_chat.rb +0 -9
- data/lib/watobo/utils/load_icon.rb +0 -9
- data/lib/watobo/utils/ntlm.rb +866 -875
- data/lib/watobo/utils/print_debug.rb +12 -21
- data/lib/watobo/utils/response_builder.rb +90 -99
- data/lib/watobo/utils/response_hash.rb +0 -9
- data/lib/watobo/utils/secure_eval.rb +0 -9
- data/lib/watobo/utils/strings.rb +10 -19
- data/lib/watobo/utils/text2request.rb +0 -9
- data/lib/watobo/utils/url.rb +23 -32
- data/lib/watobo/utils/utf16.rb +11 -20
- data/modules/active/Apache/mod_status.rb +0 -9
- data/modules/active/Apache/multiview.rb +151 -160
- data/modules/active/Flash/crossdomain.rb +0 -9
- data/modules/active/JWT/jwt_oauth2_none.rb +111 -0
- data/modules/active/cq5/cq5_default_selectors.rb +106 -115
- data/modules/active/cq5/cqp_user_enumeration.rb +125 -134
- data/modules/active/directories/dirwalker.rb +0 -9
- data/modules/active/discovery/fileextensions.rb +0 -9
- data/modules/active/discovery/http_methods.rb +0 -9
- data/modules/active/discovery/jsmapfiles.rb +79 -0
- data/modules/active/domino/domino_db.rb +68 -76
- data/modules/active/dotNET/custom_errors.rb +102 -111
- data/modules/active/dotNET/dotnet_files.rb +90 -99
- data/modules/active/fileinclusion/lfi_simple.rb +0 -9
- data/modules/active/jboss/jboss_basic.rb +0 -9
- data/modules/active/sap/business_objects.rb +51 -60
- data/modules/active/sap/its_commands.rb +0 -9
- data/modules/active/sap/its_service_parameter.rb +0 -9
- data/modules/active/sap/its_services.rb +0 -9
- data/modules/active/sap/its_xss.rb +0 -9
- data/modules/active/shell_shock/shell_shock.rb +139 -148
- data/modules/active/siebel/siebel_apps.rb +160 -169
- data/modules/active/sqlinjection/sql_boolean.rb +0 -9
- data/modules/active/sqlinjection/sql_numerical.rb +198 -0
- data/modules/active/sqlinjection/sqli_error.rb +0 -9
- data/modules/active/sqlinjection/sqli_timing.rb +220 -229
- data/modules/active/struts2/default_handler_ognl.rb +106 -115
- data/modules/active/struts2/include_params_ognl.rb +105 -114
- data/modules/active/xml/xml_xxe.rb +112 -123
- data/modules/active/xss/xss_ng.rb +214 -223
- data/modules/active/xss/xss_simple.rb +0 -9
- data/modules/passive/ajax.rb +68 -77
- data/modules/passive/autocomplete.rb +56 -65
- data/modules/passive/cookie_options.rb +0 -9
- data/modules/passive/cookie_xss.rb +0 -9
- data/modules/passive/detect_code.rb +0 -9
- data/modules/passive/detect_fileupload.rb +0 -9
- data/modules/passive/detect_infrastructure.rb +0 -9
- data/modules/passive/detect_one_time_tokens.rb +0 -9
- data/modules/passive/dirindexing.rb +0 -9
- data/modules/passive/disclosure_domino.rb +55 -64
- data/modules/passive/disclosure_emails.rb +0 -9
- data/modules/passive/disclosure_ipaddr.rb +55 -53
- data/modules/passive/filename_as_parameter.rb +0 -9
- data/modules/passive/form_spotter.rb +0 -9
- data/modules/passive/hidden_fields.rb +50 -59
- data/modules/passive/hotspots.rb +0 -9
- data/modules/passive/in_script_parameter.rb +0 -9
- data/modules/passive/json_web_token.rb +93 -0
- data/modules/passive/multiple_server_headers.rb +0 -9
- data/modules/passive/possible_login.rb +0 -9
- data/modules/passive/redirect_url.rb +0 -9
- data/modules/passive/redirectionz.rb +0 -9
- data/modules/passive/sap-headers.rb +56 -65
- data/modules/passive/xss_dom.rb +0 -9
- data/plugins/aem/aem.rb +11 -20
- data/plugins/aem/gui/main.rb +118 -127
- data/plugins/aem/gui/tree_view.rb +171 -180
- data/plugins/aem/lib/agent.rb +130 -138
- data/plugins/aem/lib/dispatcher.rb +45 -51
- data/plugins/aem/lib/engine.rb +177 -186
- data/plugins/catalog/catalog.rb +345 -355
- data/plugins/crawler/crawler.rb +4 -13
- data/plugins/crawler/gui.rb +5 -14
- data/plugins/crawler/gui/auth_frame.rb +270 -279
- data/plugins/crawler/gui/crawler_gui.rb +271 -276
- data/plugins/crawler/gui/general_settings_frame.rb +96 -105
- data/plugins/crawler/gui/hooks_frame.rb +80 -89
- data/plugins/crawler/gui/scope_frame.rb +50 -59
- data/plugins/crawler/gui/settings_tabbook.rb +38 -47
- data/plugins/crawler/gui/status_frame.rb +59 -68
- data/plugins/crawler/lib/bags.rb +18 -27
- data/plugins/crawler/lib/constants.rb +11 -20
- data/plugins/crawler/lib/engine.rb +488 -497
- data/plugins/crawler/lib/grabber.rb +68 -77
- data/plugins/crawler/lib/status.rb +71 -80
- data/plugins/crawler/lib/uri_mp.rb +12 -21
- data/plugins/filefinder/filefinder.rb +326 -333
- data/plugins/sqlmap/bin/test.rb +78 -87
- data/plugins/sqlmap/gui.rb +4 -13
- data/plugins/sqlmap/gui/main.rb +218 -227
- data/plugins/sqlmap/gui/options_frame.rb +97 -106
- data/plugins/sqlmap/lib/sqlmap_ctrl.rb +90 -100
- data/plugins/sqlmap/sqlmap.rb +2 -11
- data/plugins/sslchecker/cli/sslchecker_cli.rb +0 -9
- data/plugins/sslchecker/gui/cipher_table.rb +246 -254
- data/plugins/sslchecker/gui/gui.rb +258 -264
- data/plugins/sslchecker/gui/sslchecker.rb +4 -13
- data/plugins/sslchecker/lib/check.rb +127 -133
- data/plugins/wshell/gui/main.rb +119 -117
- data/plugins/wshell/lib/core.rb +38 -88
- data/plugins/wshell/wshell.rb +11 -20
- 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
|
-
|
|
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
|
data/lib/watobo/utils.rb
CHANGED
|
@@ -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
|
data/lib/watobo/utils/crypto.rb
CHANGED
|
@@ -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
|