MacCMS站长的噩梦:手机访问跳转广告,到底是谁在搞鬼
网站明明在自己电脑上打开一切正常,但用手机访问就跳转到乱七八糟的广告页,或者播放页突然冒出一个关不掉的浮窗——这大概是MacCMS站长最头疼的问题之一。更让人崩溃的是,你换了模板、清了缓存、甚至重装了程序,问题依然存在。
先说结论:跳转的根源往往不在你看到的那个页面上。
一种常见的假象:浏览器缓存同步
有个站长踩过的坑很典型。他用手机和电脑都登录了Edge浏览器并开启了同步功能。手机访问网站时偶尔跳广告,他以为是网站被挂马,于是拼命在服务器端排查,清缓存、换模板、重装系统,折腾了个遍,问题依旧。最后发现原因让人哭笑不得:他在电脑端从没清过缓存,而浏览器同步功能把电脑上“干净”的缓存又同步回了手机,把手机上的“脏”数据覆盖了。也就是说,他每次在手机上清完缓存,同步一开,旧数据又回来了。
所以排查跳转问题时,先换一个没登录任何账号、没开同步的浏览器,或者用隐私模式测试。如果隐私模式下不跳,那就不是网站的问题,是你浏览器自己的问题。
真正的罪魁祸首:模板和插件里夹带的私货
如果隐私模式下依然跳转,那基本可以确定是网站代码层面出了问题。
最常见的是盗版模板自带的恶意代码。很多新手站长为了省钱,从各种来路不明的渠道下载“破解版”主题,这些主题里往往夹带着加密过的JavaScript。它平时不发作,等你网站有一定流量了,就悄悄开始给手机访问者注入跳转脚本。
另一个重灾区是采集插件自带的播放器。有站长发现,使用了某些采集插件的播放器后,移动端访问时会被强制写入剪切板内容,比如淘口令之类的推广信息。还有统计代码,个别统计服务本身就不干净,移动端首次访问大概率会触发跳转。
排查方法其实不复杂。打开手机浏览器的开发者工具(或者用Chrome的远程调试),看Network面板里加载了哪些外部请求。如果发现 jquery.buzz、cdnboostcache 这类不认识的域名,或者有奇怪的加密JS在加载,那就是中招了。
还有一种情况:程序本身被入侵
MacCMS V10在过去几年里爆出过多次大规模入侵事件。攻击者通过漏洞往 All.php 控制器文件末尾注入恶意代码,特征是有 /*AUTO_INJECT_7a3f*/ 这样的标记,后面跟着一段 echo script... 的代码。
更隐蔽的是 application/extra/addons.php 这个文件。正常未启用插件时,它的内容就是一个简单的空数组,几十个字节。如果这个文件大小变成了20到30KB,里面塞满了乱七八糟的配置,那基本可以判定已被植入恶意代码。
清理的时候有个坑:如果不先修复 addons.php 就删除后门文件,后门会自动重生,连宝塔的防篡改都拦不住。
排查思路总结
第一步,换干净的浏览器测试。 隐私模式或者全新安装的浏览器,不登录任何账号。如果正常,问题在你的日常浏览器缓存同步上。
第二步,检查模板和JS文件。 重点看 template/你的主题/ 下的所有 .js 文件,滚动到文件底部,看有没有风格不一致的加密代码。逐个检查JS文件的时间戳,被篡改的文件修改时间会异常。
第三步,检查核心控制器。 打开 application/common/controller/All.php,翻到文件末尾,看有没有不明来历的 echo 或 eval 代码。同样检查 application/extra/addons.php 的文件大小是否异常。
第四步,如果确认被挂马且清理不干净,考虑重建。 有老站长说过一句实在话:发现被挂马时,你的整站甚至整个服务器都已经不安全了。挂马的人放了一个钩子,就会放一堆钩子,人手清理很难干净。最简单的办法是备份好数据库和确认干净的配置文件,重装程序,模板代码自己过一遍。
手机跳转这种事,最恶心的地方在于它只针对特定渠道或特定设备发作,你自己用电脑测半天什么都看不出来。排查的核心原则是:先排除你自己的问题,再怀疑程序的问题,最后才考虑是不是整个环境都沦陷了。
您好,这是一条评论。若需要审核、编辑或删除评论,请访问仪表盘的评论界面。评论者头像来自 Gravatar。