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
data/plugins/sqlmap/bin/test.rb
CHANGED
|
@@ -1,90 +1,81 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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
|
|
1
|
+
inc_path = File.expand_path(File.join(File.dirname(__FILE__), "..", "..","..", "lib"))
|
|
2
|
+
$: << inc_path
|
|
3
|
+
|
|
4
|
+
require 'watobo'
|
|
5
|
+
require 'fox16'
|
|
6
|
+
|
|
7
|
+
include Fox
|
|
9
8
|
|
|
10
|
-
inc_path = File.expand_path(File.join(File.dirname(__FILE__), "..", "..","..", "lib"))
|
|
11
|
-
$: << inc_path
|
|
12
|
-
|
|
13
|
-
require 'watobo'
|
|
14
|
-
require 'fox16'
|
|
15
|
-
|
|
16
|
-
include Fox
|
|
17
|
-
|
|
18
9
|
# @private
|
|
19
|
-
module Watobo#:nodoc: all
|
|
20
|
-
module Gui
|
|
21
|
-
@application = FXApp.new('SQLmap', 'Plugin Test')
|
|
22
|
-
|
|
23
|
-
%w( load_icons gui_utils load_plugins session_history save_default_settings master_password session_history save_project_settings save_proxy_settings ).each do |l|
|
|
24
|
-
f = File.join("watobo","gui","utils", l)
|
|
25
|
-
puts "SQLMap >> Loading #{f}"
|
|
26
|
-
require f
|
|
27
|
-
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
require 'watobo/gui/utils/init_icons'
|
|
31
|
-
|
|
32
|
-
gui_path = File.expand_path(File.join(File.dirname(__FILE__),"..", "..", "..", "lib","watobo", "gui"))
|
|
33
|
-
|
|
34
|
-
Dir.glob("#{gui_path}/*.rb").each do |cf|
|
|
35
|
-
next if File.basename(cf) == 'main_window.rb' # skip main_window here, because it must be loaded last
|
|
36
|
-
f = File.join("watobo","gui", File.basename(cf))
|
|
37
|
-
puts "Loading >> #{f}"
|
|
38
|
-
require f
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
puts "Loading plugin templates ..."
|
|
42
|
-
require 'watobo/gui/templates/plugin'
|
|
43
|
-
require 'watobo/gui/templates/plugin2'
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
require File.join(File.expand_path(File.dirname(__FILE__)), "..","sqlmap")
|
|
47
|
-
|
|
48
|
-
gui_path = File.join(File.expand_path(File.dirname(__FILE__)),"..", "gui")
|
|
49
|
-
puts "="
|
|
50
|
-
|
|
51
|
-
%w( main options_frame).each do |l|
|
|
52
|
-
puts "Loading >> #{l}"
|
|
53
|
-
require File.join(gui_path, l + ".rb")
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
class TestGui < FXMainWindow
|
|
57
|
-
|
|
58
|
-
def initialize(app)
|
|
59
|
-
# Call base class initializer first
|
|
60
|
-
super(app, "Test Application", :width => 800, :height => 600)
|
|
61
|
-
frame = FXVerticalFrame.new(self, LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_GROOVE)
|
|
62
|
-
|
|
63
|
-
button = FXButton.new(frame, "Open Plugin",:opts => FRAME_THICK|FRAME_RAISED|LAYOUT_FILL_X|LAYOUT_TOP|LAYOUT_LEFT,:padLeft => 10, :padRight => 10, :padTop => 5, :padBottom => 5)
|
|
64
|
-
button.connect(SEL_COMMAND) {
|
|
65
|
-
dlg = Watobo::Plugin::Sqlmap::Gui.new(self)
|
|
66
|
-
if dlg.execute != 0
|
|
67
|
-
puts dlg.to_h.to_yaml
|
|
68
|
-
end
|
|
69
|
-
}
|
|
70
|
-
end
|
|
71
|
-
# Create and show the main window
|
|
72
|
-
def create
|
|
73
|
-
super # Create the windows
|
|
74
|
-
show(PLACEMENT_SCREEN) # Make the main window appear
|
|
75
|
-
dlg = Watobo::Plugin::Sqlmap::Gui.new(self)
|
|
76
|
-
#dlg.set_tab_index 2
|
|
77
|
-
#prefs = { :form_auth_url => "http://www.google.com" }
|
|
78
|
-
#dlg.settings.auth.set prefs
|
|
79
|
-
|
|
80
|
-
if dlg.execute != 0
|
|
81
|
-
puts dlg.details.to_yaml
|
|
82
|
-
end
|
|
83
|
-
end
|
|
84
|
-
end
|
|
85
|
-
# application = FXApp.new('LayoutTester', 'FoxTest')
|
|
86
|
-
TestGui.new(@application)
|
|
87
|
-
@application.create
|
|
88
|
-
@application.run
|
|
89
|
-
end
|
|
10
|
+
module Watobo#:nodoc: all
|
|
11
|
+
module Gui
|
|
12
|
+
@application = FXApp.new('SQLmap', 'Plugin Test')
|
|
13
|
+
|
|
14
|
+
%w( load_icons gui_utils load_plugins session_history save_default_settings master_password session_history save_project_settings save_proxy_settings ).each do |l|
|
|
15
|
+
f = File.join("watobo","gui","utils", l)
|
|
16
|
+
puts "SQLMap >> Loading #{f}"
|
|
17
|
+
require f
|
|
18
|
+
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
require 'watobo/gui/utils/init_icons'
|
|
22
|
+
|
|
23
|
+
gui_path = File.expand_path(File.join(File.dirname(__FILE__),"..", "..", "..", "lib","watobo", "gui"))
|
|
24
|
+
|
|
25
|
+
Dir.glob("#{gui_path}/*.rb").each do |cf|
|
|
26
|
+
next if File.basename(cf) == 'main_window.rb' # skip main_window here, because it must be loaded last
|
|
27
|
+
f = File.join("watobo","gui", File.basename(cf))
|
|
28
|
+
puts "Loading >> #{f}"
|
|
29
|
+
require f
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
puts "Loading plugin templates ..."
|
|
33
|
+
require 'watobo/gui/templates/plugin'
|
|
34
|
+
require 'watobo/gui/templates/plugin2'
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
require File.join(File.expand_path(File.dirname(__FILE__)), "..","sqlmap")
|
|
38
|
+
|
|
39
|
+
gui_path = File.join(File.expand_path(File.dirname(__FILE__)),"..", "gui")
|
|
40
|
+
puts "="
|
|
41
|
+
|
|
42
|
+
%w( main options_frame).each do |l|
|
|
43
|
+
puts "Loading >> #{l}"
|
|
44
|
+
require File.join(gui_path, l + ".rb")
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
class TestGui < FXMainWindow
|
|
48
|
+
|
|
49
|
+
def initialize(app)
|
|
50
|
+
# Call base class initializer first
|
|
51
|
+
super(app, "Test Application", :width => 800, :height => 600)
|
|
52
|
+
frame = FXVerticalFrame.new(self, LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_GROOVE)
|
|
53
|
+
|
|
54
|
+
button = FXButton.new(frame, "Open Plugin",:opts => FRAME_THICK|FRAME_RAISED|LAYOUT_FILL_X|LAYOUT_TOP|LAYOUT_LEFT,:padLeft => 10, :padRight => 10, :padTop => 5, :padBottom => 5)
|
|
55
|
+
button.connect(SEL_COMMAND) {
|
|
56
|
+
dlg = Watobo::Plugin::Sqlmap::Gui.new(self)
|
|
57
|
+
if dlg.execute != 0
|
|
58
|
+
puts dlg.to_h.to_yaml
|
|
59
|
+
end
|
|
60
|
+
}
|
|
61
|
+
end
|
|
62
|
+
# Create and show the main window
|
|
63
|
+
def create
|
|
64
|
+
super # Create the windows
|
|
65
|
+
show(PLACEMENT_SCREEN) # Make the main window appear
|
|
66
|
+
dlg = Watobo::Plugin::Sqlmap::Gui.new(self)
|
|
67
|
+
#dlg.set_tab_index 2
|
|
68
|
+
#prefs = { :form_auth_url => "http://www.google.com" }
|
|
69
|
+
#dlg.settings.auth.set prefs
|
|
70
|
+
|
|
71
|
+
if dlg.execute != 0
|
|
72
|
+
puts dlg.details.to_yaml
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
# application = FXApp.new('LayoutTester', 'FoxTest')
|
|
77
|
+
TestGui.new(@application)
|
|
78
|
+
@application.create
|
|
79
|
+
@application.run
|
|
80
|
+
end
|
|
90
81
|
end
|
data/plugins/sqlmap/gui.rb
CHANGED
|
@@ -1,14 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
# gui.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
|
|
1
|
+
require_relative 'sqlmap'
|
|
9
2
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
require_relative File.join('gui', l )
|
|
14
|
-
end
|
|
3
|
+
%w( main options_frame ).each do |l|
|
|
4
|
+
require_relative File.join('gui', l )
|
|
5
|
+
end
|
data/plugins/sqlmap/gui/main.rb
CHANGED
|
@@ -1,228 +1,219 @@
|
|
|
1
|
-
#.
|
|
2
|
-
# main.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 Plugin
|
|
13
|
-
class Sqlmap
|
|
14
|
-
class SettingsTabBook < FXTabBook
|
|
15
|
-
attr :general
|
|
16
|
-
def initialize(owner)
|
|
17
|
-
#@tab = FXTabBook.new(self, nil, 0, LAYOUT_FILL_X|LAYOUT_FILL_Y|LAYOUT_RIGHT)
|
|
18
|
-
super(owner, nil, 0, LAYOUT_FILL_X|LAYOUT_FILL_Y|LAYOUT_RIGHT)
|
|
19
|
-
FXTabItem.new(self, "General", nil)
|
|
20
|
-
@general = OptionsFrame.new(self, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_RAISED)
|
|
21
|
-
|
|
22
|
-
# FXTabItem.new(self, "Advanced", nil)
|
|
23
|
-
# frame = FXVerticalFrame.new(self, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_RAISED)
|
|
24
|
-
# FXTabItem.new(self, "Log", nil)
|
|
25
|
-
# frame = FXVerticalFrame.new(self, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_THICK|FRAME_RAISED)
|
|
26
|
-
# @log_viewer = Watobo::Gui::LogViewer.new(frame, :append, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_SUNKEN)
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
class Gui < Watobo::Plugin2
|
|
31
|
-
icon_file "sqlmap.ico"
|
|
32
|
-
|
|
33
|
-
include Watobo::Constants
|
|
34
|
-
include Responder
|
|
35
|
-
# include Watobo::Plugin::Crawler::Constants
|
|
36
|
-
def updateView
|
|
37
|
-
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
def initialize(owner, project=nil, chat=nil)
|
|
41
|
-
super(owner, "SQLMap", project, :opts => DECOR_ALL, :width=>800, :height=>600)
|
|
42
|
-
@plugin_name = "SQLMap"
|
|
43
|
-
|
|
44
|
-
FXMAPFUNC(SEL_COMMAND, ID_ACCEPT, :onAccept)
|
|
45
|
-
|
|
46
|
-
main = FXVerticalFrame.new(self, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y)
|
|
47
|
-
matrix = FXMatrix.new(main, 3, :opts => MATRIX_BY_COLUMNS|LAYOUT_FILL_X)
|
|
48
|
-
FXLabel.new(matrix, "sqlmap path:")
|
|
49
|
-
# frame = FXHorizontalFrame.new(main, :opts => LAYOUT_FILL_X)
|
|
50
|
-
# FXLabel.new(frame, "http://")
|
|
51
|
-
@binary_path_txt = FXTextField.new(matrix, 60, nil, 0, :opts => TEXTFIELD_NORMAL|LAYOUT_SIDE_RIGHT|LAYOUT_FILL_X)
|
|
52
|
-
bin_path = Watobo::Plugin::Sqlmap.binary_path
|
|
53
|
-
bin_path ="not defined" if bin_path.empty?
|
|
54
|
-
@binary_path_txt.text = bin_path
|
|
55
|
-
|
|
56
|
-
@change_btn = FXButton.new(matrix, "...", :opts => BUTTON_DEFAULT|BUTTON_NORMAL )
|
|
57
|
-
@change_btn.enable
|
|
58
|
-
|
|
59
|
-
@change_btn.connect(SEL_COMMAND){
|
|
60
|
-
open_path = nil
|
|
61
|
-
unless @binary_path_txt.text.empty?
|
|
62
|
-
dir_name = File.dirname(@binary_path_txt.text)
|
|
63
|
-
unless dir_name.empty?
|
|
64
|
-
open_path = dir_name unless File.exist? dir_name
|
|
65
|
-
end
|
|
66
|
-
end
|
|
67
|
-
bin_path_old = @binary_path_txt.text
|
|
68
|
-
bin_path = FXFileDialog.getOpenFilename(self, "Select SQLmap Path", open_path)
|
|
69
|
-
unless bin_path.empty?
|
|
70
|
-
@binary_path_txt.text = bin_path
|
|
71
|
-
else
|
|
72
|
-
@binary_path_txt.text = bin_path_old
|
|
73
|
-
|
|
74
|
-
end
|
|
75
|
-
if File.exist? @binary_path_txt.text
|
|
76
|
-
Watobo::Plugin::Sqlmap.set_binary_path bin_path
|
|
77
|
-
@accept_btn.enable
|
|
78
|
-
else
|
|
79
|
-
Watobo::Plugin::Sqlmap.set_binary_path ''
|
|
80
|
-
@accept_btn.disable
|
|
81
|
-
end
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
FXLabel.new(matrix, "temp directory:")
|
|
85
|
-
# frame = FXHorizontalFrame.new(main, :opts => LAYOUT_FILL_X)
|
|
86
|
-
# FXLabel.new(frame, "http://")
|
|
87
|
-
@output_path_txt = FXTextField.new(matrix, 60, nil, 0, :opts => TEXTFIELD_NORMAL|LAYOUT_SIDE_RIGHT|LAYOUT_FILL_X)
|
|
88
|
-
@output_path_txt.text = Watobo::Plugin::Sqlmap.tmp_dir
|
|
89
|
-
|
|
90
|
-
@output_path_btn = FXButton.new(matrix, "...", :opts => BUTTON_DEFAULT|BUTTON_NORMAL )
|
|
91
|
-
@output_path_btn.enable
|
|
92
|
-
|
|
93
|
-
@output_path_btn.connect(SEL_COMMAND){
|
|
94
|
-
output_path = FXFileDialog.getOpenDirectory(self, "Select Temp Directory", Watobo::Plugin::Sqlmap.tmp_dir)
|
|
95
|
-
|
|
96
|
-
#puts ">> #{output_path}"
|
|
97
|
-
unless output_path.empty?
|
|
98
|
-
@output_path_txt.text = output_path
|
|
99
|
-
Watobo::Plugin::Sqlmap.set_tmp_dir output_path
|
|
100
|
-
end
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
@settings_tab = SettingsTabBook.new(main)
|
|
104
|
-
|
|
105
|
-
unless chat.nil?
|
|
106
|
-
@settings_tab.general.request = chat.request
|
|
107
|
-
end
|
|
108
|
-
|
|
109
|
-
# @log_viewer = @settings_tabbook.log_viewer
|
|
110
|
-
|
|
111
|
-
buttons = FXHorizontalFrame.new(main, :opts => LAYOUT_SIDE_BOTTOM|LAYOUT_FILL_X|PACK_UNIFORM_WIDTH,
|
|
112
|
-
:padLeft => 40, :padRight => 40, :padTop => 20, :padBottom => 20)
|
|
113
|
-
@accept_btn = FXButton.new(buttons, "&Start", nil, self, ID_ACCEPT,
|
|
114
|
-
FRAME_RAISED|FRAME_THICK|LAYOUT_RIGHT|LAYOUT_CENTER_Y)
|
|
115
|
-
@accept_btn.disable
|
|
116
|
-
@accept_btn.enable unless Watobo::Plugin::Sqlmap.binary_path.empty?
|
|
117
|
-
# Cancel
|
|
118
|
-
FXButton.new(buttons, "&Cancel", nil, self, ID_CANCEL,
|
|
119
|
-
FRAME_RAISED|FRAME_THICK|LAYOUT_RIGHT|LAYOUT_CENTER_Y)
|
|
120
|
-
# Configuration Categories
|
|
121
|
-
# =
|
|
122
|
-
# Request
|
|
123
|
-
# Optimization
|
|
124
|
-
# Detection
|
|
125
|
-
# Techniques
|
|
126
|
-
# Fingerprint
|
|
127
|
-
# Enumeration
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
@accept_btn.disable if @settings_tab.general.request.empty?
|
|
132
|
-
@settings_tab.general.subscribe(:request_changed){
|
|
133
|
-
if @settings_tab.general.request.empty?
|
|
134
|
-
@accept_btn.disable
|
|
135
|
-
else
|
|
136
|
-
@accept_btn.enable
|
|
137
|
-
end
|
|
138
|
-
}
|
|
139
|
-
end
|
|
140
|
-
|
|
141
|
-
private
|
|
142
|
-
|
|
143
|
-
def create_request_file
|
|
144
|
-
fname = "sqlmap_" + Time.now.to_i.to_s + ".req"
|
|
145
|
-
begin
|
|
146
|
-
file = File.join(@output_path_txt.text, fname)
|
|
147
|
-
File.open(file, "w"){ |fh|
|
|
148
|
-
fh.puts @settings_tab.general.request
|
|
149
|
-
}
|
|
150
|
-
return file
|
|
151
|
-
rescue => bang
|
|
152
|
-
puts bang
|
|
153
|
-
puts bang.backtrace
|
|
154
|
-
return nil
|
|
155
|
-
end
|
|
156
|
-
end
|
|
157
|
-
|
|
158
|
-
def sqlmap_command(file)
|
|
159
|
-
sqlmap = []
|
|
160
|
-
|
|
161
|
-
sqlmap << @binary_path_txt.text
|
|
162
|
-
sqlmap << "-r #{file}"
|
|
163
|
-
sqlmap << "--level #{@settings_tab.general.level}"
|
|
164
|
-
sqlmap << "--risk #{@settings_tab.general.risk}"
|
|
165
|
-
sqlmap << "--technique #{@settings_tab.general.technique}"
|
|
166
|
-
sqlmap << @settings_tab.general.manual_options
|
|
167
|
-
|
|
168
|
-
sqlmap_cmd = sqlmap.join(" ")
|
|
169
|
-
end
|
|
170
|
-
|
|
171
|
-
def linux_command(file)
|
|
172
|
-
# /usr/bin/xterm -hold -e "script -c \"ls -alh\" test234.out"
|
|
173
|
-
xterm_bin = "/usr/bin/xterm"
|
|
174
|
-
return false unless File.exist? xterm_bin
|
|
175
|
-
command = "cd #{@output_path_txt.text} && #{xterm_bin} -hold -e \""
|
|
176
|
-
script_cmd = "#{sqlmap_command(file)}"
|
|
177
|
-
command << script_cmd
|
|
178
|
-
command << '"'
|
|
179
|
-
puts command
|
|
180
|
-
command
|
|
181
|
-
end
|
|
182
|
-
|
|
183
|
-
def win_command(file)
|
|
184
|
-
# start "sqlmap" /WAIT /D c:\tools dir
|
|
185
|
-
command = ""
|
|
186
|
-
|
|
187
|
-
out_file = file.gsub(/\.req/, ".out")
|
|
188
|
-
start_path = "#{@output_path_txt.text}"
|
|
189
|
-
start_path.gsub!(/\//,'\\')
|
|
190
|
-
|
|
191
|
-
script_cmd = "start \"SQLmap\" /D #{start_path} /WAIT cmd.exe /k \"#{sqlmap_command(file)}\""
|
|
192
|
-
command << script_cmd
|
|
193
|
-
command << '"'
|
|
194
|
-
puts command
|
|
195
|
-
command
|
|
196
|
-
end
|
|
197
|
-
|
|
198
|
-
def run_sqlmap(file)
|
|
199
|
-
command = case RUBY_PLATFORM
|
|
200
|
-
when /linux|bsd|solaris|hpux|darwin/
|
|
201
|
-
linux_command file
|
|
202
|
-
when /mswin|mingw|bccwin/
|
|
203
|
-
win_command file
|
|
204
|
-
end
|
|
205
|
-
Thread.new(command){ |cmd|
|
|
206
|
-
system(cmd)
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
end
|
|
210
|
-
|
|
211
|
-
def onAccept(sender, sel, event)
|
|
212
|
-
if @settings_tab.general.request.empty?
|
|
213
|
-
puts "No Request Defined!"
|
|
214
|
-
end
|
|
215
|
-
|
|
216
|
-
rf = create_request_file
|
|
217
|
-
puts "Start SQLMap with file #{rf}"
|
|
218
|
-
run_sqlmap(rf)
|
|
219
|
-
#getApp().stopModal(self, 1)
|
|
220
|
-
#self.hide()
|
|
221
|
-
#return 1
|
|
222
|
-
|
|
223
|
-
end
|
|
224
|
-
|
|
225
|
-
end
|
|
226
|
-
end
|
|
227
|
-
end
|
|
228
|
-
end
|
|
2
|
+
module Watobo#:nodoc: all
|
|
3
|
+
module Plugin
|
|
4
|
+
class Sqlmap
|
|
5
|
+
class SettingsTabBook < FXTabBook
|
|
6
|
+
attr :general
|
|
7
|
+
def initialize(owner)
|
|
8
|
+
#@tab = FXTabBook.new(self, nil, 0, LAYOUT_FILL_X|LAYOUT_FILL_Y|LAYOUT_RIGHT)
|
|
9
|
+
super(owner, nil, 0, LAYOUT_FILL_X|LAYOUT_FILL_Y|LAYOUT_RIGHT)
|
|
10
|
+
FXTabItem.new(self, "General", nil)
|
|
11
|
+
@general = OptionsFrame.new(self, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_RAISED)
|
|
12
|
+
|
|
13
|
+
# FXTabItem.new(self, "Advanced", nil)
|
|
14
|
+
# frame = FXVerticalFrame.new(self, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_RAISED)
|
|
15
|
+
# FXTabItem.new(self, "Log", nil)
|
|
16
|
+
# frame = FXVerticalFrame.new(self, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_THICK|FRAME_RAISED)
|
|
17
|
+
# @log_viewer = Watobo::Gui::LogViewer.new(frame, :append, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_SUNKEN)
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
class Gui < Watobo::Plugin2
|
|
22
|
+
icon_file "sqlmap.ico"
|
|
23
|
+
|
|
24
|
+
include Watobo::Constants
|
|
25
|
+
include Responder
|
|
26
|
+
# include Watobo::Plugin::Crawler::Constants
|
|
27
|
+
def updateView
|
|
28
|
+
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def initialize(owner, project=nil, chat=nil)
|
|
32
|
+
super(owner, "SQLMap", project, :opts => DECOR_ALL, :width=>800, :height=>600)
|
|
33
|
+
@plugin_name = "SQLMap"
|
|
34
|
+
|
|
35
|
+
FXMAPFUNC(SEL_COMMAND, ID_ACCEPT, :onAccept)
|
|
36
|
+
|
|
37
|
+
main = FXVerticalFrame.new(self, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y)
|
|
38
|
+
matrix = FXMatrix.new(main, 3, :opts => MATRIX_BY_COLUMNS|LAYOUT_FILL_X)
|
|
39
|
+
FXLabel.new(matrix, "sqlmap path:")
|
|
40
|
+
# frame = FXHorizontalFrame.new(main, :opts => LAYOUT_FILL_X)
|
|
41
|
+
# FXLabel.new(frame, "http://")
|
|
42
|
+
@binary_path_txt = FXTextField.new(matrix, 60, nil, 0, :opts => TEXTFIELD_NORMAL|LAYOUT_SIDE_RIGHT|LAYOUT_FILL_X)
|
|
43
|
+
bin_path = Watobo::Plugin::Sqlmap.binary_path
|
|
44
|
+
bin_path ="not defined" if bin_path.empty?
|
|
45
|
+
@binary_path_txt.text = bin_path
|
|
46
|
+
|
|
47
|
+
@change_btn = FXButton.new(matrix, "...", :opts => BUTTON_DEFAULT|BUTTON_NORMAL )
|
|
48
|
+
@change_btn.enable
|
|
49
|
+
|
|
50
|
+
@change_btn.connect(SEL_COMMAND){
|
|
51
|
+
open_path = nil
|
|
52
|
+
unless @binary_path_txt.text.empty?
|
|
53
|
+
dir_name = File.dirname(@binary_path_txt.text)
|
|
54
|
+
unless dir_name.empty?
|
|
55
|
+
open_path = dir_name unless File.exist? dir_name
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
bin_path_old = @binary_path_txt.text
|
|
59
|
+
bin_path = FXFileDialog.getOpenFilename(self, "Select SQLmap Path", open_path)
|
|
60
|
+
unless bin_path.empty?
|
|
61
|
+
@binary_path_txt.text = bin_path
|
|
62
|
+
else
|
|
63
|
+
@binary_path_txt.text = bin_path_old
|
|
64
|
+
|
|
65
|
+
end
|
|
66
|
+
if File.exist? @binary_path_txt.text
|
|
67
|
+
Watobo::Plugin::Sqlmap.set_binary_path bin_path
|
|
68
|
+
@accept_btn.enable
|
|
69
|
+
else
|
|
70
|
+
Watobo::Plugin::Sqlmap.set_binary_path ''
|
|
71
|
+
@accept_btn.disable
|
|
72
|
+
end
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
FXLabel.new(matrix, "temp directory:")
|
|
76
|
+
# frame = FXHorizontalFrame.new(main, :opts => LAYOUT_FILL_X)
|
|
77
|
+
# FXLabel.new(frame, "http://")
|
|
78
|
+
@output_path_txt = FXTextField.new(matrix, 60, nil, 0, :opts => TEXTFIELD_NORMAL|LAYOUT_SIDE_RIGHT|LAYOUT_FILL_X)
|
|
79
|
+
@output_path_txt.text = Watobo::Plugin::Sqlmap.tmp_dir
|
|
80
|
+
|
|
81
|
+
@output_path_btn = FXButton.new(matrix, "...", :opts => BUTTON_DEFAULT|BUTTON_NORMAL )
|
|
82
|
+
@output_path_btn.enable
|
|
83
|
+
|
|
84
|
+
@output_path_btn.connect(SEL_COMMAND){
|
|
85
|
+
output_path = FXFileDialog.getOpenDirectory(self, "Select Temp Directory", Watobo::Plugin::Sqlmap.tmp_dir)
|
|
86
|
+
|
|
87
|
+
#puts ">> #{output_path}"
|
|
88
|
+
unless output_path.empty?
|
|
89
|
+
@output_path_txt.text = output_path
|
|
90
|
+
Watobo::Plugin::Sqlmap.set_tmp_dir output_path
|
|
91
|
+
end
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
@settings_tab = SettingsTabBook.new(main)
|
|
95
|
+
|
|
96
|
+
unless chat.nil?
|
|
97
|
+
@settings_tab.general.request = chat.request
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
# @log_viewer = @settings_tabbook.log_viewer
|
|
101
|
+
|
|
102
|
+
buttons = FXHorizontalFrame.new(main, :opts => LAYOUT_SIDE_BOTTOM|LAYOUT_FILL_X|PACK_UNIFORM_WIDTH,
|
|
103
|
+
:padLeft => 40, :padRight => 40, :padTop => 20, :padBottom => 20)
|
|
104
|
+
@accept_btn = FXButton.new(buttons, "&Start", nil, self, ID_ACCEPT,
|
|
105
|
+
FRAME_RAISED|FRAME_THICK|LAYOUT_RIGHT|LAYOUT_CENTER_Y)
|
|
106
|
+
@accept_btn.disable
|
|
107
|
+
@accept_btn.enable unless Watobo::Plugin::Sqlmap.binary_path.empty?
|
|
108
|
+
# Cancel
|
|
109
|
+
FXButton.new(buttons, "&Cancel", nil, self, ID_CANCEL,
|
|
110
|
+
FRAME_RAISED|FRAME_THICK|LAYOUT_RIGHT|LAYOUT_CENTER_Y)
|
|
111
|
+
# Configuration Categories
|
|
112
|
+
# =
|
|
113
|
+
# Request
|
|
114
|
+
# Optimization
|
|
115
|
+
# Detection
|
|
116
|
+
# Techniques
|
|
117
|
+
# Fingerprint
|
|
118
|
+
# Enumeration
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
@accept_btn.disable if @settings_tab.general.request.empty?
|
|
123
|
+
@settings_tab.general.subscribe(:request_changed){
|
|
124
|
+
if @settings_tab.general.request.empty?
|
|
125
|
+
@accept_btn.disable
|
|
126
|
+
else
|
|
127
|
+
@accept_btn.enable
|
|
128
|
+
end
|
|
129
|
+
}
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
private
|
|
133
|
+
|
|
134
|
+
def create_request_file
|
|
135
|
+
fname = "sqlmap_" + Time.now.to_i.to_s + ".req"
|
|
136
|
+
begin
|
|
137
|
+
file = File.join(@output_path_txt.text, fname)
|
|
138
|
+
File.open(file, "w"){ |fh|
|
|
139
|
+
fh.puts @settings_tab.general.request
|
|
140
|
+
}
|
|
141
|
+
return file
|
|
142
|
+
rescue => bang
|
|
143
|
+
puts bang
|
|
144
|
+
puts bang.backtrace
|
|
145
|
+
return nil
|
|
146
|
+
end
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
def sqlmap_command(file)
|
|
150
|
+
sqlmap = []
|
|
151
|
+
|
|
152
|
+
sqlmap << @binary_path_txt.text
|
|
153
|
+
sqlmap << "-r #{file}"
|
|
154
|
+
sqlmap << "--level #{@settings_tab.general.level}"
|
|
155
|
+
sqlmap << "--risk #{@settings_tab.general.risk}"
|
|
156
|
+
sqlmap << "--technique #{@settings_tab.general.technique}"
|
|
157
|
+
sqlmap << @settings_tab.general.manual_options
|
|
158
|
+
|
|
159
|
+
sqlmap_cmd = sqlmap.join(" ")
|
|
160
|
+
end
|
|
161
|
+
|
|
162
|
+
def linux_command(file)
|
|
163
|
+
# /usr/bin/xterm -hold -e "script -c \"ls -alh\" test234.out"
|
|
164
|
+
xterm_bin = "/usr/bin/xterm"
|
|
165
|
+
return false unless File.exist? xterm_bin
|
|
166
|
+
command = "cd #{@output_path_txt.text} && #{xterm_bin} -hold -e \""
|
|
167
|
+
script_cmd = "#{sqlmap_command(file)}"
|
|
168
|
+
command << script_cmd
|
|
169
|
+
command << '"'
|
|
170
|
+
puts command
|
|
171
|
+
command
|
|
172
|
+
end
|
|
173
|
+
|
|
174
|
+
def win_command(file)
|
|
175
|
+
# start "sqlmap" /WAIT /D c:\tools dir
|
|
176
|
+
command = ""
|
|
177
|
+
|
|
178
|
+
out_file = file.gsub(/\.req/, ".out")
|
|
179
|
+
start_path = "#{@output_path_txt.text}"
|
|
180
|
+
start_path.gsub!(/\//,'\\')
|
|
181
|
+
|
|
182
|
+
script_cmd = "start \"SQLmap\" /D #{start_path} /WAIT cmd.exe /k \"#{sqlmap_command(file)}\""
|
|
183
|
+
command << script_cmd
|
|
184
|
+
command << '"'
|
|
185
|
+
puts command
|
|
186
|
+
command
|
|
187
|
+
end
|
|
188
|
+
|
|
189
|
+
def run_sqlmap(file)
|
|
190
|
+
command = case RUBY_PLATFORM
|
|
191
|
+
when /linux|bsd|solaris|hpux|darwin/
|
|
192
|
+
linux_command file
|
|
193
|
+
when /mswin|mingw|bccwin/
|
|
194
|
+
win_command file
|
|
195
|
+
end
|
|
196
|
+
Thread.new(command){ |cmd|
|
|
197
|
+
system(cmd)
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
end
|
|
201
|
+
|
|
202
|
+
def onAccept(sender, sel, event)
|
|
203
|
+
if @settings_tab.general.request.empty?
|
|
204
|
+
puts "No Request Defined!"
|
|
205
|
+
end
|
|
206
|
+
|
|
207
|
+
rf = create_request_file
|
|
208
|
+
puts "Start SQLMap with file #{rf}"
|
|
209
|
+
run_sqlmap(rf)
|
|
210
|
+
#getApp().stopModal(self, 1)
|
|
211
|
+
#self.hide()
|
|
212
|
+
#return 1
|
|
213
|
+
|
|
214
|
+
end
|
|
215
|
+
|
|
216
|
+
end
|
|
217
|
+
end
|
|
218
|
+
end
|
|
219
|
+
end
|