- 可以知道IoT固件仿真的基础方法及排错思路。
- 可以知道对ARM架构栈溢出漏洞的利用和调试方法。
![c1c603fd9dd454ef04131f7372a3dca6.png](https://img-blog.csdnimg.cn/img_convert/c1c603fd9dd454ef04131f7372a3dca6.png)
1.实验目标概述
为了便于实验,选择一个可以模拟的路由器固件:Tenda AC15 15.03.1.16_multi。分析的漏洞为CVE-2018-5767,是一个输入验证漏洞,远程攻击者可借助COOKIE包头中特制的‘password’参数利用该漏洞执行代码。 测试环境:Kali 2020 5.4.0-kali3-amd64固件下载地址: https://down.tenda.com.cn/uploadfile/AC15/US_AC15V1.0BR_V15.03.1.16_multi_TD01.zip
![c1c603fd9dd454ef04131f7372a3dca6.png](https://img-blog.csdnimg.cn/img_convert/c1c603fd9dd454ef04131f7372a3dca6.png)
2.固件仿真
首先使用binwalk导出固件文件系统,并通过ELF文件的头信息判断架构,得知为32位小端ARM。
binwalk -Me US_AC15V1.0BR_V15.03.1.16_multi_TD01.zip
readelf -h bin/busybox
![40a1300527ca9bec5c27b9d603abd322.png](https://img-blog.csdnimg.cn/img_convert/40a1300527ca9bec5c27b9d603abd322.png)
#安装qemu和arm的动态链接库
sudo apt install qemu-user-static libc6-arm* libc6-dev-arm*
cp $(which qemu-arm-static) .
sudo chroot ./ ./qemu-arm-static ./bin/httpd
此时发现卡在了如下图的显示,同时检查80端口也并未开启。
![1f7e63929bc7100fd90a70472e450c77.png](https://img-blog.csdnimg.cn/img_convert/1f7e63929bc7100fd90a70472e450c77.png)
mkdir -p ./proc/sys/kernel
。同时在ida中通过Strings视图搜索“Welcome to”字符串,通过交叉引用找到程序执行的上下文。
![13419d38596f571690ee140546795b3f.png](https://img-blog.csdnimg.cn/img_convert/13419d38596f571690ee140546795b3f.png)