# 前言

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 位程序)