TP5024getshell漏洞

时间:2026-10-17 05:12:37来源:力不从心网 作者:休闲

TP5024 这个型号,漏洞玩路由器的漏洞人多半不陌生。某厂商的漏洞便携式 4G 路由器,方案成熟,漏洞出货量大,漏洞二手市场几十块钱就能捡到。漏洞问题出在它的漏洞固件上——准确地说,是漏洞固件里那个跑在 80 端口的 Web 管理界面。

我把固件从官网拖下来,漏洞binwalk 一跑,漏洞squashfs 解包,漏洞rootfs 里翻出一个叫 web_server 的漏洞 CGI 二进制。丢进 IDA,漏洞函数列表里有个 sub_4012A0,漏洞看调用关系是漏洞处理 /cgi-bin/login 的。伪代码出来,第一眼就闻到味儿了:system() 的调用点,参数拼的是用户提交的 username 字段。

sprintf(cmd, "echo %s > /tmp/user.txt", username); system(cmd); 

没过滤。没引号包裹。没黑名单。就这么直白。

构造一个 username=a;telnetd -l /bin/sh; 的 POST 请求,路由器回了个 200,然后 23 端口就开了。整个过程不到三分钟。说实话,这种漏洞在 2024 年的商用固件里出现,有点离谱。但更离谱的是,这个 Web 服务是以 root 跑的。也就是说,拿到 shell 的那一刻,你就是 root,整个系统随便翻。

有人可能觉得,这玩意儿就一便携路由器,能有多大影响。我一开始也这么想。直到我扫了一圈 Shodan,发现暴露在公网上的 TP5024 管理界面,光国内就有两千多个。默认密码 admin/admin 没改的占了一大半。剩下的那些改了密码的,在这个漏洞面前跟没改一样。

攻击面不止 Web。翻 rootfs 的时候我还注意到 /etc/init.d/rcS 里启动了一个叫 tr069 的服务,监听在 7547 端口。TR-069 协议本身设计就一堆坑,加上厂商自己魔改的 SOAP 处理逻辑,又是一堆栈溢出。不过那是另一条路了,这里不展开。

回到 getshell 这条链。我试了三个不同批次的 TP5024 硬件,固件版本分别是 V1.0.3、V1.0.5、V1.0.7。V1.0.3 和 V1.0.5 直接打穿,V1.0.7 在 username 字段加了一个 str_replace(";", "", ...)。但过滤只做了一次,用 %3b 编码一下照样过。厂商的修复基本等于没修。

写 PoC 的时候我顺手做了个自动化脚本,输入目标 IP 和端口,自动检测版本、构造 payload、反弹 shell。跑了一晚上,内网环境里捞到十几台。其中一台的 /tmp 目录里躺着另一个攻击者留下的 xmrig 矿机程序。看来我不是第一个发现这个洞的人。

这事让我想起几年前 D-Link 那批路由器漏洞,模式几乎一模一样:CGI 参数拼接、system 调用、root 权限。厂商换了一茬又一茬,开发习惯愣是没变。嵌入式 Web 服务这东西,很多团队就是拿现成的 SDK 改改界面,底层代码十年不动。安全审计?不存在的。

如果你手头有 TP5024,赶紧把管理界面从公网撤下来。别指望厂商出补丁,这种走量低端产品,固件更新周期通常就半年。过了窗口期,漏洞就永远留在那儿了。自己刷个 OpenWrt 是更靠谱的选择,虽然麻烦点,但至少不会因为一个分号就把 root 交出去。

最后提一句,那台跑着 xmrig 的路由器,CPU 占用率常年 90% 以上。机主大概只觉得网变慢了,压根没想到自己的路由器正在给别人挖门罗币。

相关内容
推荐内容