打开官网,官网首页被挂了一串博彩链接,有木或者服务器疯狂往外发垃圾邮件——这种事我见过不止一次。马和去年一个做外贸的漏洞朋友半夜打电话,说Google搜他们品牌词,官网结果第二条就是有木“XX官网被黑,点此进入澳门赌场”。马和他以为是漏洞DNS被劫持,折腾半天才发现是官网网站根目录里多了个wp-content/uploads/2024/01/下的PHP文件,里面藏着后门。有木
木马和漏洞是马和两码事,但经常一起出现。漏洞漏洞是官网墙上的裂缝,木马是有木顺着裂缝爬进来的蟑螂。你光打蟑螂不补墙,马和下周它还来。很多运维第一反应是删掉可疑文件,重启服务,看着网站正常了,松一口气。实际上攻击者可能已经留了多个入口,甚至改了.htaccess做重定向,你删的那个只是冰山一角。
怎么判断官网是不是中了?几个土办法比扫描器还直接。用find /var/www -mtime -7 -name "*.php"列出最近七天被修改过的PHP文件,正常更新不会有那么多。或者看access.log里有没有大量POST请求打向一个不存在的路径,返回200的。再比如服务器CPU莫名跑满,top一看是www-data在跑一个叫kdevtmpfsi的进程——挖矿木马,老熟人了。
漏洞这块,官网常见的问题就那几个。CMS版本太老,插件三百年没更新,上传目录给了执行权限。phpinfo()文件忘了删,数据库密码明文写在config.php里还放在web根目录。我见过最离谱的,后台登录页面直接是/admin.php?user=admin&pass=123456,GET请求传密码,浏览器历史记录里全是明文。
处理顺序不能乱。先断网或者切到维护模式,别让攻击者继续操作。然后备份当前状态——包括被篡改的文件和日志,这是取证用的,别急着rm。接着用rkhunter或chkrootkit扫一遍系统层,确认没有rootkit。网站层的话,Wordfence或者ClamAV能扫出大部分已知后门,但别全信,手工查eval、base64_decode、gzinflate这些函数在哪些文件里被调用。
补漏洞比杀木马重要。CMS升级到最新版,插件不用的直接删,上传目录加php_flag engine off,数据库用户权限降到只允许SELECT/INSERT/UPDATE/DELETE。后台登录加二次验证,别用admin当用户名。文件权限设成644和755,别偷懒给777。这些操作花不了半小时,但能挡掉八成自动化扫描。
有个细节很多人忽略:官网被挂马后,搜索引擎会标记“此网站可能被黑客入侵”,用户点进来先看到红色警告页。就算你清理完了,得去Google Search Console提交重新审核,否则那个警告会挂好几周。百度也有类似的反馈入口,但处理速度看运气。
最后说个真实案例。一个客户坚持用某国产CMS,官方两年没更新了。网站被植入shell.php,攻击者通过它上传了一个.htaccess,把所有来自百度的流量302到博彩站。清理完文件后,我建议他换系统,他说再等等。三个月后又被黑,这次数据库都被拖了。官网安全这事,侥幸心理比漏洞本身更致命。