首页 > Wordpress > 正文

WordPress 网站被入侵怎么办?后门文件排查与清除

fenij 2026-08-03 5 Wordpress

发现 WordPress 被入侵,第一反应别慌,也别急着改密码——攻击者很可能留了后门,你改完密码他照样能进来。正确的做法是先把后门找出来清掉,再加固。下面按排查顺序来。

第一步:判断是否真的被入侵

几个明显的迹象:

  • 首页被篡改、跳转到博彩或钓鱼站
  • 搜索引擎收录了大量无关页面(日语 SEO 垃圾注入)
  • 服务器 CPU 跑满,但你的站点流量没变化
  • 文件管理器里出现你不认识的 PHP 文件
  • 数据库里 wp_users 多了管理员账号

先查数据库:

mysql -u root -p -e "SELECT ID, user_login, user_email, user_registered FROM wp_users ORDER BY ID;"

看有没有不认识的管理员账号。攻击者常用的手法是注册一个 user_login 看起来正常的账号(比如 wp_admin、system),然后赋管理员权限。

第二步:找后门文件

WordPress 后门最常见的形式是 PHP 文件被篡改或新增。用 find 配合时间戳排查:

# 找最近 7 天修改过的 PHP 文件
find /var/www/html -name "*.php" -mtime -7 -ls

# 找所有 PHP 文件里的可疑函数
grep -rl "eval\|base64_decode\|str_rot13\|gzinflate\|assert(" /var/www/html/wp-content/ --include="*.php"

重点排查这些位置:

  • wp-content/uploads/ — 这个目录不该有 PHP 文件,有就是后门
  • wp-content/themes/你的主题/ — 检查 functions.php 是否被篡改
  • wp-content/plugins/ — 不认识的插件目录
  • 根目录的 wp-config.php — 看末尾有没有被追加代码
  • .htaccess — 检查有没有被加了 RewriteRule 跳转

另一个方法是用 WP-CLI:

wp core verify-checksums
# 这会对比 WordPress 核心文件是否被修改

如果报 “Warning: File not found” 或 “Checksum doesn’t match”,说明核心文件被动过。

第三步:清理后门

找到后门文件后,别直接删——先备份一份留证。然后处理:

uploads 目录的 PHP 文件:直接删。这个目录只该有图片、PDF 等媒体文件,任何 PHP 都是后门。

被篡改的主题/插件文件:从官方源重新下载对应版本覆盖。别手动一行行删恶意代码,容易漏。如果你用的是免费主题,直接重新下载 zip 覆盖整个目录。

wp-config.php 被追加代码:手动编辑,删掉被追加的部分。通常在 require_once ABSPATH . 'wp-settings.php'; 之后被追加了 base64 编码的 payload。

.htaccess 被篡改:用 WordPress 默认的规则替换:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

第四步:清理数据库

检查 wp_options 表里的可疑项:

SELECT option_name, LENGTH(option_value) FROM wp_options WHERE LENGTH(option_value) > 5000 ORDER BY LENGTH(option_value) DESC;

攻击者经常把后门代码塞进 option_value 里,通过 do_option 钩子执行。看有没有不认识的 option_name,值是一长串 base64。

删除恶意管理员账号:

DELETE FROM wp_users WHERE ID = <恶意用户ID>;
DELETE FROM wp_usermeta WHERE user_id = <恶意用户ID>;

第五步:改密码 + 重置密钥

后门清干净后,改掉所有密码:

  • WordPress 管理员密码(所有管理员都改)
  • 数据库密码(改完同步到 wp-config.php)
  • FTP/SFTP 密码
  • 主机控制面板密码

重置 WordPress 安全密钥。到 https://api.wordpress.org/secret-key/1.1/salt/ 生成新的密钥,替换 wp-config.php 里的 AUTH_KEY 等那几行。这会让所有已登录用户 session 失效,攻击者的登录态直接作废。

第六步:防止再次入侵

排查入侵原因,堵住入口:

  • 更新所有插件和主题到最新版(过时插件是最大入口)
  • 删掉不用的插件和主题(即使不激活,代码也能被利用)
  • 禁止 uploads 目录执行 PHP:在 uploads/.htaccess 加 php_flag engine off(Apache)或 nginx 配置里 location ~* /wp-content/uploads/.*\.php$ { deny all; }
  • 装一个安全插件(Wordfence 或 Sucuri)做文件完整性监控
  • 定期备份,出事能回滚

更多 WordPress 安全教程,请访问 fenij.com

常见问题

问:清理完之后过几天又被入侵了怎么办?
答:说明后门没清干净,或者入口没堵。最可靠的办法是备份数据库,删掉整个 WordPress 目录,重新下载安装,再把数据库导回去。同时检查有没有被植入定时任务(crontab -l)或者 .bashrc 后门。

问:被入侵后 Google 收录了垃圾页面怎么处理?
答:清理后到 Google Search Console 提交移除请求,同时在 robots.txt 或页面 meta 里阻止这些 URL 被抓取。用 site:你的域名 搜索看还有没有残留垃圾收录。

问:怎么判断入侵是从哪个入口进来的?
答:看访问日志,找被入侵前后异常的请求。常见入口是过时插件的已知漏洞、弱密码爆破、以及主题编辑器被利用上传 PHP 文件。grep access.log 里的 POST 请求和 200 状态码的 PHP 文件访问。