凌晨两点,检查我盯着服务器日志里那串十六进制字符,网站后背发凉。有没有被攻击者把恶意代码藏进了图片的挂马EXIF信息里,文件名伪装成“产品图_最终版2.jpg”。检查要不是网站那天心血来潮检查了文件修改时间,这挂马可能还躺在我客户的有没有被官网上。
挂马这事,挂马跟感冒一样。检查前期没症状,网站等用户访问时浏览器弹出红色警告,有没有被流量已经损失大半了。挂马我见过太多站长,检查平时不检查,网站直到百度收录里出现“博彩”“假药”的有没有被标题才慌了神。那时候再清理,搜索引擎的信任分已经扣光了。
怎么查?别急着装什么扫描工具,先看文件。用Xshell连上服务器,敲一行命令:find /www/wwwroot -mtime -3 -type f。找出最近三天被修改过的文件。正常网站,除了你手动上传的内容,不该有文件悄悄变动。如果跳出个php文件,名字还叫“x.php”或者“1.php”,不用犹豫,基本就是木马。
光看文件不够。打开浏览器,按F12进开发者工具,切到Network面板。刷新你的网站页面,盯着那些请求。突然冒出一个域名,比如“cdn.xxx.top”或者“img.abc.xyz”,而你压根没引用过这些资源——恭喜你,中奖了。攻击者通常会注入一段JS,动态加载远程脚本。这招最阴,因为代码藏在压缩文件里,肉眼根本看不出来。
还有更隐蔽的。有些马不直接改文件,而是改数据库。WordPress网站后台,文章内容里被塞了隐藏链接。前端看不到,因为设置了display:none,但搜索引擎的爬虫能抓到。这时候你得连数据库,执行SELECT * FROM wp_posts WHERE post_content LIKE '%eval%',看看有没有可疑函数。
检查完这些,别忘了看访问日志。用grep搜一下“POST”请求,特别是wp-login.php或者admin目录的POST。攻击者拿webshell时,通常会向服务器发送一段数据。日志里如果出现频繁的403错误,又被同一个IP反复试探,那基本就是扫描器在撞你的后台。
我自己的服务器中过招,教训惨痛。那回是用了某个老旧的插件,漏洞被利用,直接上传了个后门。文件藏在uploads目录里,伪装成png,但里面是完整的PHP代码。清理完漏洞后,我养成了每周一早上检查的习惯。就三件事:看文件修改时间,看网络请求,看错误日志。整个过程不超过十五分钟。
别太依赖云防护或者WAF,那些东西能挡大部分攻击,但总有漏网的。真正的安全,靠的是你对自己网站熟悉到像自家客厅——哪里多了个花瓶,一眼就能发现。
最后说句实在话。如果哪天你发现网站变慢了,或者突然弹出奇怪的广告,别先怪服务器商。八成是挂马了。赶紧按上面说的步骤查一遍,越早发现,损失越小。等搜索引擎把你列为危险站点,那才是真的麻烦了。