先说个让人不舒服的事实:一个没人管的 WordPress 站,平均存活时间不到一年就会被扫描、被尝试入侵。不是因为你得罪了谁,是因为攻击是全自动的——机器人在全网扫漏洞,你的站只是刚好在列表里。
网上讲”怎么防”的文章很多,这篇讲另一半:已经出事了怎么办。
一、怎么判断自己被黑了
大多数时候不是你发现的,是别人告诉你的。常见信号:
- 谷歌搜索结果里你的站标题下面挂着”此网站可能遭到黑客攻击”——最严重,等于被公开贴了封条
- 访客反馈”打开你的网站会跳到另一个网站”(通常是赌博、色情、仿牌)
- 网站莫名其妙多了很多你没发过的文章,内容一般是药品、赌博、仿牌,而且全是外语
- 后台用户列表里出现不认识的管理员账号
- 服务器 CPU 长期跑满,但你网站没多少流量(被拿去挖矿了)
- 主机商发邮件说你的 IP 在发垃圾邮件
一个快速自查动作
打开谷歌,搜 site:你的域名.com 便宜药 或者 site:你的域名.com viagra、site:你的域名.com casino。如果搜出一堆你看不懂的外文页面,那就是被挂了暗链/黑帽 SEO 页面——这类攻击最阴,前台看着一切正常,只有搜索引擎能看到那些页面。
二、第一步不是修,是保现场
很多人第一反应是”赶紧删掉那些页面”——错。你现在删了,就永远不知道后门在哪,三天后它又长出来。
正确顺序:
1. 先做一次完整快照(别覆盖旧备份)
# 整站文件打包 tar -czf /root/incident-$(date +%F).tar.gz /www/wwwroot/你的站点目录 # 数据库导出 mysqldump -u用户名 -p 数据库名 > /root/incident-$(date +%F).sql
这个快照有两个用途:一是留证据(真要靠法律途径时用得上),二是万一你清理过程中搞砸了,还能退回来。
注意:不要覆盖你现有的正常备份。很多人慌了直接点”备份”,结果把被感染的版本盖到好备份上面,最后连干净的都找不回来。
2. 把站先下线或限制访问
如果是挂马/跳转,继续开着就是在持续伤害你的品牌和 SEO 评级。两个选择:
- nginx 层面只允许你自己的 IP 访问,其他返回维护页
- 实在没法操作,先在宝塔里把站点停掉
权衡:如果你的站正在跑广告,停一分钟就是真金白银。这种情况优先用”限制 IP + 立即清理”,而不是直接停站。
三、找后门:90% 的后门藏在这 5 个地方
别全站几万个文件一个个看。按优先级查:
1. uploads 目录里的 PHP 文件(最常见)
/wp-content/uploads/ 本来只该放图片。里面有 .php 文件,几乎可以确定是后门。
find /www/wwwroot/你的站点/wp-content/uploads -name "*.php"
正常情况应该一条都没有。如果有,注意有些后门会伪装成 image.jpg.php 或者藏在多级子目录里,上面这条命令能全找出来。
2. 最近被修改过的 PHP 文件
find /www/wwwroot/你的站点 -name "*.php" -mtime -7
找出最近 7 天改过的 PHP。你自己没改过的,重点看。用 stat 文件名 看精确时间,跟你自己操作的时间对一下。
3. 主题的 functions.php 和 header.php
后门最爱的藏身处,因为每次页面加载它都会执行。看文件末尾有没有一串意义不明的加密字符,典型长这样:
eval(base64_decode("...一大串乱码..."));
或者用 $GLOBALS、assert、preg_replace('/e' 这类函数配合变量拼接的。
4. 定时任务
crontab -l ls -la /etc/cron.d/ systemctl list-timers
挖矿木马和反复再感染的根源经常在这。看到不认识的、指向 /tmp/ 下可执行文件的任务,直接记下来。
5. 后台管理员列表
后台 → 用户,按注册时间排序。看有没有你没建过的账号。攻击者建了管理员账号,你清理完文件他还能直接登录进来。
还有一个隐蔽的:数据库的 wp_users 表里可能有后台界面看不到(被插件隐藏)的账号。直接查:
SELECT ID, user_login, user_email, user_registered FROM wp_users ORDER BY user_registered DESC;
四、清理:宁可重装,别手抖
核心原则:核心文件用官方覆盖,不要手动改
WordPress 核心(wp-admin、wp-includes、根目录的 wp-*.php)被污染的话,不要试图手动修补。删掉这些目录,从 wordpress.org 下载同版本的官方包,解压覆盖。
你的内容、主题、插件、图片都在 wp-content 里,不受影响。
插件和主题:全部删掉重装
被感染的插件,你不知道它哪个文件被动了。正确做法:
- 后台删掉插件(这会保留设置数据)
- 从官方源重新下载安装
- 不要用网上的”破解版/nulled”插件——相当一部分后门就是这么进来的
数据库里的注入内容
黑帽 SEO 页面和暗链通常存在 wp_posts 里。查:
SELECT ID, post_title FROM wp_posts WHERE post_content LIKE '%casino%' OR post_content LIKE '%viagra%' OR post_content LIKE '%<iframe%';
另外 wp_options 表也常被塞入恶意跳转代码,检查 siteurl、home 两个值有没有被改成陌生域名。
五、收尾:不做这几步,三天后还会再来
- 全部密钥换掉:
wp-config.php里的四个 AUTH_KEY / SALT(去 wordpress.org 的密钥生成器重新生成),以及数据库密码、FTP/SSH 密码、主机面板密码 - 更新一切:WordPress 核心、所有插件、所有主题、PHP 版本
- 删掉不用的插件和主题——不用的插件是最大的攻击面,它不再更新,但漏洞还在
- 检查文件权限:目录 755,文件 644,
wp-config.php设 600 - 装个登录保护:限制登录失败次数 + 后台双因素认证
六、被谷歌标记了怎么恢复
清理干净后,去 Google Search Console → 安全性与手动处置 → 提交”重新审核请求”。说明你做了什么。
审核一般 3-7 天。期间不要反复提交,会排到队尾。
说点实在的
整个流程走下来,熟练的人 4-6 小时,不熟练的两三天。而且清理期间你的站是在停摆的。
所以真正划算的做法不是”学会被黑之后怎么修”,而是让这件事不发生:每周自动更新、每周异地备份、登录有限流、装一个文件完整性监控。这些东西我自己维护的站上都配着,成本一个月几百块,比出一次事的损失便宜太多。
如果你现在就处在”已经中招”的状态,别自己硬扛——先把现场备份好,然后找人处理。越拖,SEO 损伤越大。