wordpress 网站被挂马后的清理和修复措施
网站如果被病毒木马感染,不仅会导致数据泄露、服务瘫痪,还会被黑客利用作为“肉鸡”去攻击他人,对网站信誉和业务造成毁灭性打击,所以一旦发现必须立即进行清理和维护。在前面的文章中我们分享了腾讯云服务器被提示网站存在恶意文件的清理方法。到这一步,木马和病毒已经无法危害到网站和服务器安全了,但是我们还应该进一步进行检测,揪出隐藏在网站文件中的后门,一劳永逸。
一、 被感染的网站系统文件,该怎么处理?
前面的措施之后Nginx 已经拦截了,但是微步木马检测还是提示有恶意代码,因为文件本身的肉体里还残留着黑客写进去的脏代码,此时我们可以同替换法进行解决。
⚡ 最完美的“物理超度”净化方案(十分钟搞定)
不要去一行行找恶意代码。WordPress 的核心系统(wp-admin 和 wp-includes 目录,以及根目录的绝大部分 .php 文件)完全不包含你的文章、图片、主题和配置。它们就像 Windows 的系统盘,是可以整个格掉重装的。
严格按照以下步骤,给两个网站来一次无损的系统重装:
-
去官网下载一套绝对干净的对应版本的 WordPress 源码,直接在宝塔里把它解压到一个完全无关的独立临时目录,比如
/www/wwwroot/clean-wp/。 -
在干净的源码目录中,删掉一个文件夹:
-
进去把
wp-content文件夹直接删掉(因为这个文件夹里是主题和插件,原版里只有空的示例,我们不需要它)。
-
-
去你的正式网站目录:
-
绝对不能删的文件和目录:
wp-content(你的图片和主题在这里)、wp-config.php(你的数据库密码在这里)、.htaccess(你的伪静态)。 -
可以放心大胆删掉的文件和目录:
wp-admin文件夹、wp-includes文件夹,以及根目录下的wp-activate.php、wp-blog-header.php、wp-load.php、wp-settings.php等除了wp-config.php以外的所有原厂.php文件。
-
-
进行复制替换:
-
把刚才解压的
clean-wp干净目录里的所有内容,全部全选,复制并粘贴到你的正式网站目录中。
-
效果: 这样操作完后,你的网站系统文件就变成了 100% 纯净的原厂状态,黑客在系统文件里留下的所有篡改痕迹会被连根拔起,物理抹除。
二、 如何彻底揪出木马的源头?
黑客能把木马送进来,说明网站一定存在某个“源头漏洞”。如果不堵住源头,过几天他们可能还会利用漏洞重新写文件进来。
WordPress 的后门源头一般躲在两个地方:
1. 躲在
wp-content(主题/插件)里的隐蔽后门系统文件可以重装,但
wp-content里的主题(themes)和插件(plugins)不能删。黑客最喜欢在这里面藏匿伪装文件,比如伪装成wp-menu-modules.php、meta-plugin.php等看起来很像官方的文件。
排查方法:
1. 进入宝塔面板的【文件】,进入
/www/wwwroot/你的网站/wp-content/plugins/。2. 看看里面有没有你根本没有安装过、或者不认识的插件文件夹?如果有,直接整个文件夹删除。
3. 检查你的主题目录
wp-content/themes/你的当前主题/,点击【修改时间】排序,看看最近几天有没有哪个.php文件被修改过?如果有,右键【编辑】它,看看里面是不是有大量一长串看不懂的密文(如eval(base64_decode(...))),如果有,这就是黑客的免杀木马。2. 终极自查:检查数据库里的“暗门”
有些高明黑客会在你的数据库里注入一个高权限的管理员账号,哪怕你文件删光了,他还能用这个账号登录后台重新上传木马。
操作:
1. 登录你的 WordPress 网站后台,点击 【用户】->【所有用户】。
2. 仔细检查有没有不是你创建的、莫名其妙的管理员账号(尤其是英文名或乱码账号)?
3. 如果发现有不知名的管理员,立刻勾选并彻底删除。
三、 木马清理行动指南
1.利用宝塔的文本搜索功能“全盘搜捕”
黑客的木马通常需要利用一些敏感的 PHP 执行函数。我们可以直接用宝塔的“文件内容搜索”功能把它们揪出来。
在宝塔【文件】中,进入 /www/wwwroot/ 根目录。
点击右上角或者工具栏的 【文件内容搜索】。
在搜索框中分别输入以下几个高危关键词进行搜索:
eval(
base64_decode(
assert(
$_POST[ (如果你发现某个主题或插件的非核心文件里包含大段看不懂的密文且带有这些词,基本就是后门)
2.强化 Nginx 规则:把插件目录也锁上
既然黑客喜欢在插件目录(plugins)里藏木马并试图去运行它,我们干脆一不做二不休,把插件目录的 PHP 执行权限也彻底封死!
请打开你之前修改的网站的 Nginx 配置文件,找到我们放拦截规则的地方,把它改成这样:
# 严禁在 uploads、wp-includes 以及 plugins(插件) 目录运行 PHP 脚本
location ~* /(wp-content/uploads|wp-includes|wp-content/plugins)/.*\.php$ {
deny all;
}
注意: 绝大部分正常的 WordPress 插件是不需要从外部直接通过 URL 访问其内部的 .php 文件的(它们都是由根目录的 index.php 统一调用)。把这个锁上后,黑客在插件里放再多木马,只要一访问就是 403 猝死。
3. 安装免费的 Wordfence 插件进行应用层扫描
微步是在服务器系统层扫描,而 Wordfence Security 是 WordPress 领域最顶级的免费安全插件。
登录你的 WordPress 网站后台,点击 【插件】->【安装插件】,搜索 Wordfence 并安装激活。
激活后进入 Wordfence -> Scan(扫描),点击 【Start New Scan】。
它会把你的网站文件和官方数据库里每一行进行比对。如果发现 enlighter 或者其他插件被改动过,或者包含恶意代码,它会直接给出“一键修复(Repair)”或“一键删除(Delete)”的按钮,非常适合彻底清扫。如图,下面第一个文件:w--blog-top.php就是黑客的木马文件,因为本身网站文件不存在这个文件。

网站被挂马后的清理和修复措施
我们打开这个文件看到代码内容:

网站被挂马后的清理和修复措施
4. 抓到的铁证:wp-blog-top.php 怎么处理?
结论:立刻、马上、无条件地删除这个 wp-blog-top.php 文件!
深度技术分析(为什么它是核心后门?): 上图看到的代码,是标准的不死僵尸木马(Ramnit/Impostor 变种)。
-
伪装性极强:WordPress 官方根目录下根本没有
wp-blog-top.php这个文件(官方只有wp-blog-header.php),它是黑客自己创建用来混淆视听的。 -
劫持官方入口:黑客会在你的正常系统文件(比如
index.php或wp-load.php)的第一行,写上一句require_once('wp-blog-top.php');。这样只要有人访问你的网站,这个木马就会在后台默默执行。 -
图中的代码在干什么?
-
代码里包含大量的
base64_decode密文、gzuncompress(解压)以及md5校验。 -
它最核心的逻辑是:定时在后台自动下载、生成并修复那些被你删掉的乱码木马(如
uploads里的反弹 Shell)。 -
这就是为什么你前几天删了木马,过一会儿又会自动冒出来的根本原因——因为这个“源头母体”一直在内存或请求中偷偷运行!
-
🛠️ 怎么彻底干掉它?
-
在宝塔里,直接彻底删除网站根目录下的
wp-blog-top.php。 -
检查关键文件是否被它污染:请在宝塔里右键编辑网站根目录下的
index.php和wp-config.php,看看最顶部第一行或第二行,有没有包含wp-blog-top.php的字样?如果有,把引入它的那一行代码删掉(保证官方文件的纯净)。
四、怎么分辨是否正常文件?
我们使用宝塔“文件内容搜索”搜出来的文件多是完全正常的。因为 WordPress 官方和一些大牌插件(比如 Wordfence 自身、Rank Math SEO)在处理数据、远程请求、升级时,也必须用到 eval、base64_decode、POST 这些函数。
教你一套肉眼排查法,你可以瞬间分辨谁是内鬼:
1. 看路径(最快的过滤方式)
-
百分之百正常的文件: 路径在
wp-content/plugins/wordfence/或者wp-content/plugins/rank-math/目录下的。这些是知名大厂的安全和SEO插件,它们由于要比对特征码、解包数据,天然带有大量此类高危词,千万不要动它们。 -
极度危险的路径: * 路径在
wp-content/uploads/目录下的任何.php文件(正常 uploads 只能有图片,绝对不能有 PHP,只要有,直接删)。-
路径在核心目录(如
wp-includes/或wp-admin/)下,但文件修改时间是最近几天的。
-
2. 看代码长相(编辑打开看一眼)
-
正常代码: 排版整齐,有大量的英文注释(注释开头是
*或//),变量名都是有意义的单词(比如$user_id,$response)。 -
黑客木马: 没有任何注释,代码往往挤在同一行,或者有几千个字符长。里面充斥着完全看不懂的、由数字和英文字母组成的“巨型乱码块”(如
O00O0O00O...或aWJpYmFv...)。只要看到这种一坨一坨像乱码一样的代码,直接删掉该文件。
🏁 最终收尾总结:你已经无限接近胜利了!
请立刻执行以下最后两步:
-
删掉
wp-blog-top.php,并检查根目录index.php最顶部有没有被塞入恶意链接。 -
鉴于 Wordfence 表现极其优秀(一上来就抓住了最关键的母体文件),请在 Wordfence 的扫描报告里,点击 "Delete all deletable files" 或者根据它的提示把受感染文件全部清除或修复。
把 wp-blog-top.php 这个幕后黑手物理蒸发,再配合你的 Nginx 铁闸规则,黑客的这个木马机制就彻底崩盘了。处理完后,今晚再观察一下,腾讯云和微步应该再也不会有新告警了!