WordPress网站被黑恢复教程是一套从备份、隔离、清理、修复到安全加固的完整操作流程。
备份当前网站状态
在开始任何清理工作之前,先完整备份当前被黑状态下的网站文件和数据库,这样做可以保留攻破痕迹,便于后续分析,也能防止清理过程中误删数据。
使用 FTP/SFTP 下载网站根目录下的全部文件,包括隐藏文件,通过 phpMyAdmin 或 WP-CLI 导出数据库,命令示例:
mysqldump-u用户名-p数据库名>hacked_backup.sql
同时记录文件修改时间、可疑文件路径和异常账户信息,为后续清理提供依据。

开启维护模式并隔离网站
清理期间尽量避免访问者触发恶意代码,也防止攻破继续扩散,WordPress 后台仍可登录,可以启用维护模式插件;如果后台不可用,在网站根目录创建 .maintenance 文件,内容为:
<?php $upgrading=time();
也可以通过服务器防火墙或 .htaccess 限制 IP 访问,只允许自己的 IP 访问网站。
修改所有密码与密钥
立即修改 WordPress 后台管理员密码、数据库密码、主机控制面板密码、FTP/SFTP 密码、SSH 密码以及关联邮箱密码,所有密码使用随机强密码,避免与其他网站相同。
同时更新 wp-config.php 中的安全密钥和盐值,使现有登录会话全部失效。
检查并清理管理员账户
通过数据库检查 wp_users 和 wp_usermeta 表,删除未知管理员账户,使用 SQL 查询:
SELECT*FROMwp_users; DELETEFROMwp_usersWHEREuser_login='可疑用户名';
检查所有用户的 user_email 是否被改动,重置所有用户的密码,确保没有攻破者留下的后们账户。
扫描恶意文件与后们
使用安全插件如 Wordfence、Sucuri 或在线扫描工具扫描网站文件,手动检查常见目录:wp-content/uploads、wp-content/themes、根目录,查找近期修改的 PHP 文件和可疑函数。
使用命令行查找近期修改的文件和恶意代码:
find.-name"*.php"-mtime-10 grep-Rl"eval(base64_decode". grep-Rl"gzinflate". grep-Rl"assert".
重点检查文件名随机的 PHP 文件、伪装为图片的 PHP 文件以及藏在深层目录中的小文件。
比对核心文件完整性
从 WordPress 官方仓库下载与网站相同版本的压缩包,解压后与服务器上的核心文件进行对比,删除多余文件,替换被修改的核心文件。
保留 wp-config.php 和 wp-content 目录,其余核心目录和文件以官方版本为准,可以使用 diff 命令对比:
diff-rwordpress-official/网站根目录/
任何不属于官方核心的文件都要仔细审查并移除。
检查主题和插件文件
逐个检查已安装的主题和插件,删除不使用的主题和插件,对正在使用的主题,从官方或可信来源重新下载覆盖,检查主题的 functions.php 是否被插入陌生代码。
查看插件目录中是否有不属于官方插件的文件,特别是近期修改的文件,更新所有插件到最新版本,弃用长期不更新的插件。
清理数据库中的恶意脚本和载入
搜索数据库中常见的恶意内容,如 <script>、iframe、eval、隐藏链接等,使用 phpMyAdmin 全文搜索或 WP-CLI 搜索替换:
wpsearch-replace'恶意代码'''--all-tables
检查 wp_options 表中的 siteurl 和 home 是否被改动,检查 wp_posts 中的文章内容是否被插入隐藏链接或广告代码。
删除未授权文件和隐藏后们
检查网站根目录和子目录中的最近修改文件,特别是以点开头的隐藏文件、上传目录中的 PHP 文件、伪装为 favicon 的文件。
删除所有不属于官方核心、主题、插件的文件,检查 .htaccess 是否被载入重定向规则或恶意代码,清理异常的跳转和权限规则。
更新 WordPress 核心、插件和主题
清理完成后,登录后台更新 WordPress 核心、所有插件和主题到最新版本,更新后删除不再维护的插件和主题,使用 WP-CLI 更新:
wpcoreupdate wppluginupdate--all wpthemeupdate--all
更新之前确保已备份,更新后再次扫描文件,确认没有重新出现恶意代码。
重置 WordPress 安全密钥和盐
在 wp-config.php 中替换以下所有常量为新值:
define('AUTH_KEY','新随机值');
define('SECURE_AUTH_KEY','新随机值');
define('LOGGED_IN_KEY','新随机值');
define('NONCE_KEY','新随机值');
define('AUTH_SALT','新随机值');
define('SECURE_AUTH_SALT','新随机值');
define('LOGGED_IN_SALT','新随机值');
define('NONCE_SALT','新随机值');可以从 WordPress 官方随机生成器获取新值,使所有现有登录会话失效。
更新数据库密码和主机凭据
在主机控制面板中修改数据库密码,然后同步更新 wp-config.php 中的 DB_PASSWORD 值,更新 FTP、SSH 等所有访问渠道的密码,检查是否存在攻破者添加的未知 FTP 账户或 SSH 密钥。
检查并清理计划任务和后们进程
查看主机控制面板中的 Cron 任务,删除不明定时任务,检查 wp-config.php 是否被引入远程文件或添加自动执行代码。
通过 SSH 查看正在运行的进程和对外连接:
crontab-l psaux|grep-iphp
终止可疑进程,确认没有持续运行的后们脚本。
设置安全的文件权限
将 WordPress 文件权限设置为安全值:目录设为 755 或 750,文件设为 644 或 640,wp-config.php 设为 600,避免任何文件赋予 777。
可以在根目录执行:
find.-typed-execchmod755{}\;
find.-typef-execchmod644{}\;
chmod600wp-config.php重新安装或恢复干净备份
如果无法彻底清理,建议从被黑前的干净备份恢复,恢复后立即执行上述所有密码和密钥修改,再更新到最新版本,不要把被黑后的文件覆盖到新环境,避免再次感染。
安全加固和防火墙设置
安装并配置安全插件,开启登录保护、双因素认证和登录限速,设置 .htaccess 保护 wp-admin 和 wp-config.php,禁止目录浏览,禁止在 wp-content/uploads 目录执行 PHP。
示例规则:
<Fileswp-config.php> OrderAllow,Deny Denyfromall </Files>
限制 /wp-admin 只允许指定 IP 访问,开启 HTTPS 并强制跳转。
修复搜索引擎中的恶意快照
清理完成后,使用 Google Search Console 提交网站审核,检查 sitemap.xml 和 robots.txt 是否被改动,删除搜索引擎已收录的可疑 URL,提交重新审核请求,等待解除安全警告。
建立长期监控和备份机制
设置自动备份插件或主机备份,保留至少最近几份异地备份,安装文件完整性监控插件,记录核心文件变化,开启安全日志,定期检查登录记录和文件修改记录,保持 WordPress 核心、插件、主题始终更新,及时修复已知漏洞。