恢复没有备份也无法登录中毒的WordPress站点

By | 7月 9, 2022

WordPress搭建的网站中毒了,所有访问都自动跳转到首页,也不能登录到后台,想通过登录后台,安装插件清除病毒是行不通的。WordPress文章都存在数据库里,上传的图片等文件在wp-content/uploads/里。我选择重新安装WordPress,然后把以前的wp-content/uploads/文件再上传过去。

1. 备份整个站点

虽然只需要wp-content/uploads/,但是为了保险起见,把整个站点都备份一下。

2. 重新安装

下载一个新的WordPress,上传到服务器,填写数据库信息,重新安装。

3. 更新密码,启用动态验证码登录

更新一个新的密码。安装Wordfence插件,进入“Login Security”选项,手机安装Microsoft Authenticator,启用动态验证码。为了方便,启用”30天只用动态验证一次“,取消”XML-RPC的动态验证“。

4. 启用FireWall

安装Wordfence后,进入Firewall Options,启用”Enabled and Protecting“。

5. 安装WP Hide & Security Enhancer

使用该插件,可以将WordPress默认的访问路径重定向,只是逻辑上的重定向,不影响物理路径。

6. 优化数据库

安装WP-Optimize插件或WP DB Cleaner,给数据库瘦身。通常中毒后,数据库里有很多垃圾数据。

7. 恢复以前的wp-content/uploads/

在将以前的wp-content/uploads/上传到站点前,先手动排查下病毒文件。在旧站点wp-content/uploads/目录下,搜索关键字”*php*“和”*.db“,将搜索到的文件删除,然后将wp-content/uploads/上传到服务器。下图是我旧站点uploads文件夹里搜索出来的文件:

8. 扫描病毒

进入”Wordfence/Scan“页面,点击”START NEW SCAN“,待扫描完毕后,清理发现的病毒文件。

9. 备份站点

安装”UpdraftPlus Backup/Restore“插件,备份站点。它可以将备份存在远程云上,例如Dropbox, Google Drive, Google Cloud等。

至此,网站就恢复了。如果2天内,不再瘫痪,就说明网站没有问题了。


2022/7/9 更新

网站再次被攻击瘫痪了,查看日志发现下面有大量如下post请求:

  • /wp-login.php
  • /wp-cron.php
  • /xmlrpc.php

重新安装新的wordpress,恢复站点后,使用 ‘WP Hide’ 插件做如下fix:

  • /wp-login.php (重定向,disable default)
  • /wp-cron.php(block default)
  • /xmlrpc.php(重定向,disable default)

网上搜索wp-cron.php,发现很多博主说这个引起宕机,需要disable它。参考此博文,编辑wp-config.php,添加一行:

define('DISABLE_WP_CRON', true);

又安装了disable-xml-rpc-api 插件,双重保险避免xmlrpc.php遭到攻击。