网站被挂马后怎么彻底清理?从发现到恢复收录的完整流程

王尘宇 问题解答 5

上个月一个客户的WordPress站点被挂了JS挖矿脚本,Google Search Console同时报了安全警告,收录掉了60%。从发现问题到完全恢复,用了大概两周。这篇文章把整个流程完整写下来。

怎么发现的

三个信号同时出现。第一,网站首页加载从1.2秒变成了8秒以上,用户反馈页面很卡。第二,同服务器的其他几个站点CPU占用突然飙到95%。第三,GSC发了安全警告邮件,说检测到了恶意软件。

第一个反应是登录服务器,top看了一下——有个www-data用户跑的进程占了60% CPU,进程名是乱码。基本确定被挂了。

第一步:隔离

先把网站切到维护模式。WordPress的话装个WP Maintenance Mode插件,或者直接放一个maintenance.html。目的是阻止用户访问感染页面,同时防止恶意代码继续扩散。

然后给网站目录做一个完整的备份——注意这个备份是取证用的,不要覆盖到干净的备份里。tar -czf infected_backup.tar.gz /www/wwwroot/site/

第二步:找出所有恶意代码

别手动一个个文件翻,浪费时间。用命令行批量扫描:

grep -rl 'eval(' /www/wwwroot/site/ | head -20

eval是PHP木马最常见的入口函数。扫完后看结果,把包含可疑eval的文件列出来。

再扫一遍base64_decode:grep -rl 'base64_decode' /www/wwwroot/site/ | head -20

很多恶意代码会把核心逻辑base64编码后藏在正常文件里,上面两个grep基本能覆盖90%的情况。

如果装了宝塔面板,用宝塔的文件查找功能也能做类似的事——在网站目录下搜索eval、base64_decode、shell_exec这些关键词。

实际结果:这个站一共找到了7个感染文件。3个是WordPress核心文件被直接篡改的(wp-config.php、index.php、wp-settings.php),4个是主题目录下被注入的.php文件(文件名伪装成.png.php)。

第三步:恢复干净版本

不要把感染文件逐个修复——你不知道有没有遗漏。正确做法:

删除整个WordPress核心目录(wp-admin, wp-includes)和所有主题/插件目录。从WordPress.org下载最新版本,重新上传核心文件。主题和插件从官方源重新下载安装。

wp-config.php和wp-content/uploads/下的上传文件需要手动处理——因为uploads里可能有被注入的恶意文件。逐个检查uploads目录下有没有.php后缀的文件(正常上传应该是图片和文档格式),有的话删掉。

第四步:改密码、加固

改掉所有密码:数据库密码、FTP密码、WordPress管理员密码、服务器root密码。不要偷懒。

然后做安全加固:禁止PHP在uploads目录执行(在uploads目录下放一个.htaccess文件,内容:php_flag engine off);把wp-config.php的权限改成400(只有root可读);关掉XML-RPC(很多暴力破解通过它攻击);装一个安全插件,Wordfence或者Sucuri都行;确保所有插件、主题、WordPress核心都是最新版本。

第五步:提交Google审核

恢复干净后,去GSC的安全问题页面,点击「请求审核」。Google通常会在24到72小时内重新扫描你的网站。扫描通过后安全警告会解除。

安全警告解除不代表排名自动恢复。被标记过的网站会有一个信任恢复期,排名通常需要2到4周才会回到之前的水平。这段时间正常更新内容、保持网站正常运行就行。

根因分析

排查下来,这个站被入侵的原因是:一个已废弃的插件(两年没更新了)存在已知的任意文件上传漏洞,利用CVE编号在Exploit-DB上就能找到利用脚本。

教训:定期清理不用的插件。不是停用了就安全,插件文件如果还留在服务器上,就算没激活也可能被利用。直接删除。

标签: 网站安全 网站被黑 WordPress安全 网站恢复 问题解答

发布评论 0条评论)

  • Refresh code

还木有评论哦,快来抢沙发吧~