本文将主要围绕仿真,以一个漏洞为切入,但是不深究这个漏洞
参考链接
https://wkr.moe/study/853.html#%E5%9B%BA%E4%BB%B6%E6%A8%A1%E6%8B%9F
漏洞信息
https://nvd.nist.gov/vuln/detail/CVE-2022-26210在函数setUpgradeFW中包含命令注入漏洞。此漏洞允许攻击者通过构建的请求执行任意命令。
固件
A3000RU V5.9c.5185_B20201128https://totolink.com.my/products/a3000ru/
固件提取
binwalk -Me TOTOLINK_C8189R-1C_A3000RU_IP04325_8197F_SPI_16M128M_V5.9c.5185_B20201128_ALL.web
该固件并没有进行加密,可直接提取出文件系统:squashfs-root目录
模拟仿真
firmae模拟
binwalk提取出文件系统后,firmae目录下./run.sh -r TOTOLINK-A3000RU /home/chantui/TOTOLINK_C8189R-1C_A3000RU_IP04325_8197F_SPI_16M128M_V5.9c.5185_B20201128_ALL.web
-a analyze模式-r run模式-d debug模式
/home/chantui/TOTOLINK_C8189R-1C_A3000RU_IP04325_8197F_SPI_16M128M_V5.9c.5185_B20201128_ALL.web是固件包
firmae的安装本人折腾了一天,事实证明还是得用代理,否则自己去下载依赖真的太麻烦了
问题:watchdog调用reboot不过因为系统是Linux的,TOTOLINK的前端直接给当成移动端UA特征去显示了;并且跑起来一分钟左右就会访问不了查看系统日志:qemu.final.serial.log,发现有个reboot调用,是watchdog调用的
个人判断:后台登录时限为1分钟左右,不进行登录便会进行watchdog调用了sys_reboot,来实现重启服务进程,可Ubuntu中进行reboot操作,只能关闭当前进程,却不能够进行内核重启https://blog.csdn.net/cjsycyl/article/details/9184749https://blog.csdn.net/sonic7c/article/details/109072494
解决办法:
-
直接干掉watchdog
-
改掉重启的前置条件
第一个思路的话,可能有些路由器干掉watchdog就会崩,所以算是简单粗暴的下策,但是这回咱们测了下(启动后马上手动kill -9掉)发现直接干掉问题不大,没啥负面影响,所以干就完了
1把watchdog重命名成watchdog_,然后写个shell当成假的watchdog将文件系统打包,生成新zip压缩包:zip -r –
firmae根据压缩包的形式获取,进行固件模拟仿真当然,zip压缩后,也可将其打包成bin格式
重新模拟
debug查看服务
./run.sh -d TOTOLINK-A3000RU /home/chantui/TOTOLINK_C8189R-1C_A3000RU_IP04325_8197F_SPI_16M128M_V5.9c.5185_B20201128_ALL.web
漏洞复现
原文始发于微信公众号(Th0r安全):物联网安全之Firmae固件模拟仿真