detect unifi in ssh sessions

master
h00die 2019-03-12 20:35:32 -04:00
parent cc3cc7b7dd
commit a0b1ca1767
3 changed files with 19 additions and 1 deletions

View File

@ -116,11 +116,18 @@ module Metasploit
proof = ssh_socket.exec!("id\n").to_s
if (proof =~ /id=/)
proof << ssh_socket.exec!("uname -a\n").to_s
if (proof =~/JUNOS /)
if (proof =~ /JUNOS /)
# We're in the SSH shell for a Juniper JunOS, we can pull the version from the cli
# line 2 is hostname, 3 is model, 4 is the Base OS version
proof = ssh_socket.exec!("cli show version\n").split("\n")[2..4].join(", ").to_s
end
proof << ssh_socket.exec!("grep unifi.version /tmp/system.cfg\n").to_s
if (proof =~ /unifi.version/)
# The /tmp/*.cfg files don't give us device info, however the info command does
# we dont call it originally since it doesnt say unifi/ubiquiti in it and info
# is a linux command as well
proof << ssh_socket.exec!("grep board.name /etc/board.info\n").to_s
end
else
# Cisco IOS
if proof =~ /Unknown command or computer name/
@ -151,6 +158,8 @@ module Metasploit
def get_platform(proof)
case proof
when /unifi\.version/ #Ubiquiti Unifi. uname -a is left in, so we got to pull before Linux
'unifi'
when /Linux/
'linux'
when /Darwin/

View File

@ -403,6 +403,14 @@ class Msf::Module::Platform
Alias = "juniper"
end
#
# Ubiquiti Unifi
#
class Unifi < Msf::Module::Platform
Rank = 100
Alias = "unifi"
end
#
# Solaris
#

View File

@ -75,6 +75,7 @@ class Msf::Payload::UUID
24 => 'r',
25 => 'apple_ios',
26 => 'juniper',
27 => 'unifi',
}
# The raw length of the UUID structure