上周三凌晨两点,存黑链我盯着服务器日志里一串异常跳转,存黑链发现某个政府信息公开页面的存黑链底部,被人塞进了一段不到20行的存黑链JavaScript。代码经过混淆,存黑链但解包后指向一个博彩网站。存黑链这不是存黑链孤例。过去半年,存黑链我经手排查的存黑链站点里,至少17个被挂了类似的存黑链黑链——有的藏在CSS注释里,有的存黑链伪装成统计代码,还有一个干脆把链接写进了favicon的存黑链二进制数据里。
黑链这行当,存黑链早就不靠批量群发邮件那种笨办法了。存黑链现在流行的存黑链是“寄生”。攻击者先扫描存在已知漏洞的CMS系统,比如老版本的DedeCMS或WordPress插件,拿到后台权限后,不急着改首页,而是挑那些权重高、更新慢的栏目页下手。比如一个高校的“历年录取分数线”页面,半年没人动,挂上黑链后搜索引擎照样抓取,权重还高。我见过最刁钻的一例,黑链被写进robots.txt的注释行,爬虫读取规则时顺带就收录了。
为什么难清理?因为很多站长根本不知道自己的站被挂了。他们看首页正常,后台正常,数据库里也搜不到明显的关键词。但黑链可能藏在.htaccess的重写规则里,或者通过User-Agent判断——只对百度和谷歌的爬虫返回带黑链的版本,普通用户访问时干干净净。这种“ cloaking”技术,十年前是SEO作弊用的,现在成了黑产标配。
有个做外贸的朋友,网站流量突然涨了三成,高兴了没两天,谷歌直接给整站降权。他找我查,最后在模板文件的footer.php里发现一段base64编码的字符串,解码后是二十多个色情站链接。攻击者通过一个过期的FTP弱口令进去的,文件修改时间显示是半年前。也就是说,这半年里,他的站一直在给那些垃圾站输血,自己却浑然不觉。
清理黑链最头疼的不是删代码,是找入口。你删了页面上的链接,过两天又冒出来——说明后门还在。常见的有三种:一是webshell,藏在图片目录里,文件名像“logo_thumb.php”;二是计划任务,Linux下用crontab定时从远程拉取恶意脚本;三是数据库触发器,一更新文章就自动插入黑链。我一般先用diff对比原始文件和当前文件的差异,再查access.log里POST请求的异常时间点,最后用rkhunter扫一遍系统命令是否被替换。
普通站长能做什么?别用“admin”当后台用户名,别装来路不明的破解插件,定期手动检查模板文件里有没有不认识的