我刚从电信提供商那里获得了带有光纤互联网的Zte ZXHN F660 GPON ONT Wireless路由器。
我的第一个发现是eth Lan端口是砖砌的,这意味着我一次只能使用一个Lan telnet我无法删除或更改默认用户名和密码-可以,但只能执行临时操作:我能够使用telnet和busybox控制台绕过该问题,但不幸的是临时修复。每次路由器重新启动安装旧配置时,我认为这都是正常的。
我决定进行更多研究,并进行配置备份,然后将webui扔给我一个.bin文件。使用binwalk我看到有3个数据块被zlib压缩。我在python中制作了一个快速而又肮脏的脚本,将它们解压缩并连接到一个XML文件中,从而提供了路由器的所有设置。每次配置升级都会失败。在使用十六进制编辑器的过程中,我注意到在每个压缩的zlib块之前,都会对包的十六进制值进行充气和放气,因此我可以对其进行更正。标头中还包含每个没有标头的CRC32压缩包的串联连接中的zlib,因此重新包装新文件时,我也可以对其进行更正。但是在它旁边,我相信还有另一个CRC32,但是我找不到CRC32的含义,因此欢迎您提供帮助。
我从路由器下载了httpdcspd文件并尝试使用IDA对其进行分解,但是我发现的循环使我感到晕船,这超出了我的实际技能,这样对于获得如何将xml文件重新打包到bin文件中的帮助和解释将非常有用。 >感谢您的帮助或建议。
这是我的虚拟config.bin文件的第一个偏移量:
Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
00000000  04 03 02 01 00 00 00 00 00 00 00 04 46 36 36 30  ............F660
00000010  01 02 03 04 00 00 00 00 00 02 37 AB 00 00 36 79  ..........7«..6y
00000020  00 01 00 00 97 10 5B C9 6E 6F 53 12 00 00 00 00  ....—.[ÉnoS.....
00000030  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00000040  00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00  ................
00000050  00 00 16 B8 00 00 17 00 78 DA ED 3D 5B 77 DB 38  ...¸....xÚí=[wÛ8
00000060  73 EF FD 15 69 DA 3E 75 D7 E6 4D F4 E5 7C DB 53  sïý.iÚ>u×æMôå|ÛS
00000070  99 94 1D 9D 95 14 46 94 AD AF FB E2 03 53 B0 CC  ™”..•.F”.¯ûâ.S°Ì
00000080  13 1A 64 49 CA 97 FD F5 05 A8 1B 05 02 20 48 C9  ..dIÊ—ýõ.¨... HÉ
00000090  B2 94 D2 49 6C 47 33 04 06 83 B9 01 1C 60 FE 61  ²”ÒIlG3..ƒ¹..`þa
000000A0  5F FD D7 BF FC 63 F4 10 7C 41 E0 19 FE F1 D5 BE  _ý׿ücô.|Aà.þñÕ¾
000000B0  BA 02 09 FC FA 65 18 BE 5A E1 0C A5 7F 7C 55 BF  º..üúe.¾Zá.¥.|U¿
000000C0  62 04 FC DF 2F 83 F0 8F AF 0A F9 8F DD 5F 20 77  b.üß/ƒð.¯.ù.Ý_ w
000000D0  AF BB E8 31 FC FA E5 05 04 18 A4 E2 3F 9A A2 64  ¯»è1üúå...¤â?š¢d
000000E0  FF 94 EC 67 DB 30 F0 67 F8 CB 50 8C 6B F2 F3 EB  ÿ”ìgÛ0ðgøËPŒkòóë
000000F0  29 7E FC 14 37 46 7E E0 4E 37 BA 1E B7 07 76 BE  )~ü.7F~àN7º.·.v¾
00000100  63 8D DF F1 9D 0F 5F 07 F8 B7 45 D7 DD 1B FB 64  c.ßñ.._.ø·E×Ý.ûd
00000110  6C AB 59 EB 2B 1C D2 DC E8 3D 5A E2 18 05 A8 65  l«Yë+.ÒÜè=Zâ..¨e
00000120  5B 20 F2 FC F4 7D 81 41 3D 3F 8A FD E9 14 C6 1D  [ òüô}.A=?Šýé.Æ.
00000130  04 1E 02 B8 81 B2 18 C0 92 34 B5 9C 34 4D 48 9A  ...¸.².À’4µœ4MHš

这是我的路由器的伪config.bincspdhttpd文件的副本:

#1 楼

第二个CRC是从0x100x28开始的标头的CRC。以下脚本基于dbcCfgFileDecry函数检查配置文件,该函数从偏移量0x10验证并解压缩该配置文件。基于堆的缓冲区溢出漏洞,因为它没有检查当前块是否适合分配的缓冲区。

评论


非常感谢ebux!完美匹配,您介意向我解释一下您要找出的过程,以便我可以学习更多。谢谢 :)

–SebastienDuval
16年8月30日在10:05