WordPress 被黑后的完整恢复流程(含后门排查)

· wordpress · 阅读 4
摘要

先说结论:网站被黑后,最忌讳的动作是「删掉看见的可疑文件就以为好了」。绝大多数入侵者会留多处后门,只清一处,几天后必然二次被黑。正确顺序是:先隔离 → 找入口 → 全站清理 → 加固 → 监控。 第一步:先隔离,别急着修(很多人在这里就错了

先说结论:网站被黑后,最忌讳的动作是「删掉看见的可疑文件就以为好了」。绝大多数入侵者会留多处后门,只清一处,几天后必然二次被黑。正确顺序是:先隔离 → 找入口 → 全站清理 → 加固 → 监控。

第一步:先隔离,别急着修(很多人在这里就错了)

  • 把站点切到维护模式或临时下线,避免后门继续被利用。
  • 立刻修改所有管理员密码、数据库密码、FTP/面板密码。
  • 如果用的是共享主机,联系服务商看是否有同机入侵。
  • 不要立刻删日志,它是找入口的唯一线索。

第二步:判断是怎么被黑的(决定你要清理多深)

现象常见入口
搜索结果出现博彩、药品页主题或插件插马,或用 .htaccess 做 UA 跳转
首页正常,从搜索引擎点进来跳转JS 注入 + UA / referer 判断
后台多了陌生管理员账号弱密码被爆破
大量 .php 奇怪文件出现在 uploads上传漏洞或插件后门
数据库被塞外链SQL 注入或插件漏洞

看服务器访问日志(access.log)里入侵时间点附近的 POST 请求,往往能直接看到攻击路径。

第三步:找后门(重点,别偷懒)

1. 查可疑文件

按修改时间排序找最近被改的文件:

find /站点目录 -type f -name '*.php' -mtime -30 -ls

重点看这些位置,它们本来不该有 PHP:

  • wp-content/uploads/ 下出现 .php → 100% 是后门。
  • wp-content/cache/、wp-content/tmp/ 下的 .php。
  • 根目录出现 wp-config.php.bak、1.php、a.php 之类。

2. 查常见后门关键词

grep -r -l --include='*.php' -E 'eval\(|base64_decode\(|gzinflate\(|str_rot13\(|assert\(|create_function' /站点目录/wp-content/

命中后逐个看,注意正常的主题也可能用 base64(比如内嵌字体),要人工判断。

3. 查 .htaccess 和 nginx 配置

很多挂马不改 PHP,只在 .htaccess 里加 UA 跳转。检查各目录下的 .htaccess 是否被改过。

4. 查数据库

SELECT ID, post_title FROM wp_posts WHERE post_content LIKE '%<script%';
SELECT * FROM wp_options WHERE option_name LIKE '%widget%' OR option_name LIKE '%theme_mods%';

widget 和 theme_mods 里塞 JS 是非常常见的手法,因为它们不显眼。

5. 查用户表

SELECT ID, user_login, user_email, user_registered FROM wp_users;
SELECT user_id, meta_value FROM wp_usermeta WHERE meta_key='wp_capabilities';

删掉不认识的管理员账号,重点看注册时间是入侵那个时间点的。

第四步:清理与重建(稳妥做法)

如果侵入较深,最稳的方案不是逐个删,而是重建:

  1. 导出文章、页面、评论(纯内容,不含配置)。
  2. 删掉全部 WordPress 文件。
  3. 下载官方最新安装包,全新安装。
  4. 只装你确实需要、且仍在更新的主题和插件(老版本插件是新一轮入侵的入口)。
  5. 把导出的内容导回。
  6. 主题的 functions.php 和自定义 CSS 要人工检查后再用,不要直接恢复备份里的文件。

这个做法听起来麻烦,但比「反复被黑、反复排查」省时间得多。

第五步:加固(否则会被同样方式再来一次)

  • 管理员强密码 + 两步验证。
  • 登录限次,必要时隐藏 /wp-login.php 或改登录地址。
  • 关闭后台文件编辑(DISALLOW_FILE_EDIT)。
  • 文件权限 755/644,wp-config.php 600。
  • 开启 HTTPS。
  • 所有插件主题升级到最新,没人维护的换掉。
  • 装一个文件完整性监控插件,文件被改会告警。

第六步:善后(这些别忘)

  • 清理搜索引擎里的恶意快照:Google Search Console 提交重新抓取。
  • 检查是否有恶意 301 指向,提交移除请求。
  • 如果之前挂了联盟广告或统计代码,逐一核对是否被改。
  • 把这次入侵的入口和处置记录写下来,半年后你会庆幸写过。

最后一句提醒:如果站内文章大量被搜索引擎标了「可能被入侵」,光清理不够,还需要在搜索资源平台走一次安全审查,否则流量恢复会很慢。