# 前言
D-Link DIR-816 A2 是中国台湾友讯(D-Link)公司的一款无线路由器。攻击者可借助‘datetime’参数中的 shell 元字符利用该漏洞在系统上执行任意命令。
# 1. 固件及环境
# 测试环境:Ubuntu16.04
# 固件版本:1.10B05
在官网查找对应版本(D-Link DIR-816 A2)
http://www.dlink.com.cn/techsupport/
# 静态分析工具:IDA
# 系统文件获取:binwalk
https://github.com/ReFirmLabs/binwalk
在 Ubuntu16.04 中下载 binwalk
: sudo apt install binwalk
# 动态调试工具:qemu、IDA
qemu 安装(Ubuntu22.10 下不成功):
sudo apt-get install qemu
#user mode,包含qemu-mips-static,qemu-mipsel-static,qemu-arm-static等
sudo apt-get install qemu-user-static
#system mode,包含qemu-system-mips,qemu-system-mipsel,qemu-system-arm等
sudo apt-get install qemu-system
# 2. 利用 binwalk 进行固件解包
1. 解包:
binwalk -Me DIR-816A2_FWv1.10CNB05_R1B011D88210.img
查看我们解的包,发现有个 squashfs-root
, 这就是我们需要的系统文件
2. 查找 web 的根目录
一般可以通过 find -name "*index*"
搜索出 web 的根目录在哪个具体目录下。
3. 在 web 目录下执行命令 file ../../bin/goahead
,即可查看发现是 mips 架构,在之后的 qemu 模拟器要用 mips 方式来模拟
第三步的 goahead
怎么来的具体还不目明确,有利用 nmap 扫描发现 80 端口是这个的
4. 利用 qumu 来模拟
输入命令: sudo qemu-mipsel -L ../../ -g 1234 ../../bin/goahead
-g 使用qemu并将程序挂载在1234端口,等待调试。
-L 是根目录的所在的位置。
可以使用IDA远程调试连接1234端口,进行调试,获取使用gdb也可以调试。
5. 利用 IDA 进行调试
找到源程序来利用 gdb 查看这里查看发现是 mips-32-little
, 保护全没开
本来想用远程调试,但是连接失败了,只好找到源程序来手动托入 IDA 打开(32 位程序)