使用手机 Chrome 访问某数码论坛时会自动跳转到奇怪的网站,而且是在帖子加载完成后才动态跳转。不稳定复现,仅在 Chrome 上偶现,Edge 无法复现,桌面浏览器无法复现。
主要涉及的两个恶意域名均注册于 5 月底:
分析过程
检查跳转网络请求的调用堆栈,发现一个名为jquery.min-4.0.2.js的可疑文件。
检查此文件,发现它并不是 jQuery ,而是一段混淆过的恶意代码,推测是用来跳转到恶意网站。可以从原链接或者Internet Archive获取:
这个 evil jQuery 是由托管在 cdn.bootcss.com 上的highlight.js引入的。当对此 highlight.js 的请求具有特定的 Referer和移动端 UA时,服务器才会返回带有恶意代码的 highlight.js ,否则返回正常代码,伪装性极强。而且,这段代码执行时是否引入恶意 jQuery 的操作也具有特定条件,目前我测试时使用的链接已经无法复现。
恶意的 highlight.js 可以从这里获取到,恶意代码位于文件尾部,粗略看了一下,大概是如果浏览器不是桌面端,就在 head 部分放置一个 script 标签,应该就是引入恶意 jQuery 的方法了。下图是恶意 highlight.js 与同版本正常 highlight.js 的 diff 。
发出如下网络请求,可以获取到带有恶意代码的 highlight.js ,截至写作时依然有效:
curl 'https://cdn.bootcss.com/highlight.js/9.7.0/highlight.min.js' \
-H 'sec-ch-ua: "Not.A/Brand";v="8", "Chromium";v="114", "Google Chrome";v="114"' \
-H 'Referer: https://bbs.letitfly.me/' \
-H 'sec-ch-ua-mobile: ?1' \
-H 'User-Agent: Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Mobile Safari/537.36' \
-H 'sec-ch-ua-platform: "Android"' \
--compressed
总结
由于连接是 https 连接且证书正确,可以推测 Bootcss 服务器大概率已经被攻击者掌控。建议在项目中尽快换掉 Bootcss/Bootcdn 。