属于大家的
VPS知识分享站

WordPress 被挂马怎么办?首页被改、跳转、SEO 垃圾页的清理顺序

先说结论:WordPress 被挂马,问题通常出在应用层,不是主机被提权。只删首页里那段代码,几乎一定会复发;正确顺序是“隔离备份 → 找入口 → 校验核心 → 清文件和数据库 → 堵漏洞 → 再上线”。

如果你现在看到首页被改、自动跳转或搜索结果出现垃圾页,先做三件事:

  • 别急着重装:先留证据,不然找不到入口,重装也会再中
  • 先隔离:维护模式或暂时下线,避免继续被搜索引擎抓取
  • 先备份:文件和数据库各一份,后面清理和回溯都要用

下面按“症状 → 隔离 → 找入口 → 校验 → 清理 → 后门 → 加固”讲,命令以 WP-CLI 为主。

隔离、扫描、清理、加固四个发光阶段的清理流水线
挂马处理是流水线:先隔离备份,再找入口,最后加固。

常见症状

  • 首页或文章内容被插入陌生链接、脚本、隐藏 div
  • 从搜索引擎点进来被跳转到博彩、色情或广告页
  • 搜索结果里出现大量你没发过的页面(SEO 垃圾页)
  • 后台多出陌生管理员、插件或定时任务
  • 服务器上出现陌生 PHP 文件,尤其是上传目录里的
  • 网站变慢、CPU 升高,可能同时被植入挖矿或发包脚本

有些挂马很隐蔽:只在搜索引擎来路或移动端 UA 下触发,正常访问看不出来。别只用自己的浏览器检查。

第一步:隔离和备份

  1. 开维护模式或暂时切走流量,避免继续被爬取和传播
  2. 打服务器快照,保留当前状态
  3. 打包网站文件,导出数据库,存到另一台机器
  4. 保存 Web 访问日志、PHP 错误日志、登录记录
  5. 记录发现时间和操作,后面复盘要用

不要在这个时候直接覆盖文件或清库。现场没了,入口就找不到了。

第二步:找入口

WordPress 被挂马,入口通常在这几个地方:

  • 插件/主题漏洞:长期不更新、破解版、来路不明的插件
  • 弱密码/撞库:后台管理员密码太简单,或没有 2FA
  • 上传目录:允许上传 PHP,或文件权限过宽
  • 旧 PHP/旧核心:已知漏洞没打补丁,比如 PHP2Shell 这类核心层 RCE
  • 主机被提权:如果是 root 失守,就不只是 WordPress 的问题

看访问日志里最近的 POST、上传、插件文件访问,结合文件修改时间,通常能定位到入口。找不到入口时,按“主机可能已失守”处理。

第三步:校验核心和插件

wp core verify-checksums
wp plugin verify-checksums --all
wp theme list
wp plugin list
wp user list --role=administrator

核心校验不通过,说明 WordPress 自身文件被改;插件校验不通过,说明插件文件被动过。把不通过的文件列出来,和官方版本对比,不要直接覆盖了事,先确认改了什么。

第四步:清理文件和数据库

文件侧:

  • 用官方包重装 WordPress 核心(保留 wp-config.php 和 wp-content)
  • 删除并重装可疑插件/主题,不用破解版
  • 清空上传目录里的 PHP 文件,只保留图片/文档
  • 检查 .htaccess、.user.ini、wp-config.php 有没有陌生代码
  • 检查 wp-content/mu-plugins 和 wp-content/uploads 下的异常文件
# 找最近被修改的 PHP 文件
find . -type f -name "*.php" -mtime -14 | head -50

# 找上传目录里的 PHP
find wp-content/uploads -type f -name "*.php"

# 找常见混淆函数
grep -rIl --include=*.php -E 'eval\(|base64_decode\(|gzinflate\(|str_rot13\(' wp-content 2>/dev/null | head -30

数据库侧,重点查 wp_options、wp_posts、wp_users、wp_usermeta:

wp option get siteurl
wp option get home
wp cron event list
wp db query "SELECT option_name FROM wp_options WHERE autoload='yes' AND option_value LIKE '%<script%'"

表前缀不是 wp_ 的,换成你的前缀。清理时先备份,再用 wp search-replace 或 SQL 精确替换,别整库覆盖。

放大镜扫描数据库与文件堆,标出可疑项
文件校验和数据库检查要一起做,只清一边会复发。

第五步:查后门

挂马的人通常会留后门,删掉表面代码不够:

  • 陌生管理员账号、被改过权限的用户
  • 隐藏的定时任务(wp cron event list)
  • mu-plugins 里的自动加载文件
  • 主题 functions.php 里的陌生钩子
  • 服务器 cron、SSH 公钥、面板账号

发现陌生账号先禁用、保留证据,不要直接删除。确认清理完成后再统一处理。

第六步:加固

  • 核心、插件、主题升到最新,删掉不用的
  • 管理员开 2FA,限制登录尝试,改掉弱密码
  • 装 WAF(Cloudflare 或雷池),挡住常见注入和扫描
  • 文件权限 644/755,禁止上传目录执行 PHP
  • wp-config.php 加 DISALLOW_FILE_EDIT,关掉后台在线改文件
  • 备份放站外,定期做恢复演练
  • 开文件完整性监控,发现改动及时告警
  • PHP 用受支持版本,别再跑 8.2 以下的 EOL 版本
被护盾和锁保护的干净服务器与备份库
清理完必须补上更新、2FA、WAF 和站外备份,否则还会再中。

什么时候直接重装

这几种情况,清理的性价比很低:

  • 主机被提权,或发现 root 级后门
  • 入口找不到,或清理后反复被挂
  • 多个站点同时中招,互相感染
  • 数据敏感、合规要求高,不能接受“可能没清干净”

重装的正确做法:新机器装干净环境,只迁移文章、图片和必要配置,插件用官方版本重装,所有密码、密钥、Salts 全部换掉。

常见问题 FAQ

Q1:只删首页里的代码行不行?

不行。挂马通常有后门和入口,删表面代码几天内就会复发。要清文件、清数据库、堵入口一起做。

Q2:怎么判断是插件还是主机的问题?

看文件修改时间、访问日志和核心校验。插件目录被动过、日志里有插件文件的可疑请求,多半是插件;出现提权、陌生系统进程,按主机失守处理。

Q3:数据库里的垃圾页怎么清?

先备份,再按 post_type、作者、时间、内容特征筛出来,确认后删除;同时检查 wp_options 里被注入的脚本和跳转。

Q4:清理完还会不会再中?

如果入口没堵、密码没换、插件没更新,大概率会。清理后必须做加固和监控。

Q5:要不要换服务器?

主机被提权、反复中招、或需要干净环境重建时,换一台更省事。新环境先装好补丁和 WAF,再迁数据。

参考来源

总结

WordPress 挂马的处理顺序是:隔离备份、找入口、校验核心、清文件和数据库、查后门、加固。只删代码不堵入口,等于没修。找不到入口或主机失守时,重建比清理更省心。

需要一台干净环境做重建或迁移,可以按小时开一台萤光云香港 CN2 VPS,装好补丁、WAF 和备份,再把内容迁过去,确认稳定后再切 DNS。

相关推荐

赞(0)
未经允许不得转载:VPS知识分享站 » WordPress 被挂马怎么办?首页被改、跳转、SEO 垃圾页的清理顺序