
今年3月,我一个客户的WordPress站被挂了菠菜页面。事情是这样发现的:客户自己Google搜了一下自己的品牌词,发现搜索结果摘要里出现了"澳门赌场"四个字,吓得赶紧给我打电话。从发现到完全恢复,前后花了大概六个小时。下面是我当时做排查和恢复的完整步骤,留个记录,万一你也遇到这倒霉事。
第一步:确认被黑的范围(30分钟)
不要上来就删文件——先搞清楚到底被改了什么。我用了几条命令:
找最近24小时内被修改的PHP文件:find /www/wwwroot/站点目录 -name "*.php" -mtime -1 -ls。这条命令一下子列出37个被修改的文件,包括wp-settings.php、index.php,还有一个叫class-wp-cron-monitor.php的文件——一看就知道不是WordPress自带的。
查数据库里有没有被注入的内容:我直接去phpMyAdmin里搜了"赌场"和"casino"两个关键词,在wp_posts表的4篇文章和wp_options表的3个option_value里都找到了。有一行option叫"wp_cron_backup",内容是经过eval加密的远程执行代码。
检查有没有新增的管理员账号:SELECT * FROM wp_users WHERE user_registered > '2026-03-01',发现一个叫"wpmanager"的用户,邮箱是乱码的Gmail地址。这个用户有管理员权限。
第二步:隔离和备份(20分钟)
先不要修。把整个网站目录打个tar包:tar -czf /backup/hacked_site_20260315.tar.gz /www/wwwroot/站点目录,数据库也导出一份。留着这些"犯罪现场"——一是排查的时候可以对比,二是万一删错了还能恢复。另外导出数据库之前先把网站设为维护模式,防止黑客脚本继续执行。
第三步:清理(最耗时,约3小时)
文件的处理分了几个层次:
已知的恶意文件(比如class-wp-cron-monitor.php)直接删除。被修改过的WordPress核心文件(wp-settings.php、wp-config.php等),用WordPress原版替换——从wordpress.org下载对应版本的zip包,解压后对比覆盖。主题和插件文件:这个最麻烦。黑客在一个正规插件的文件末尾追加了十几行base64编码的代码。我是用grep -rl "base64_decode" wp-content/plugins/和grep -rl "eval(" wp-content/themes/两条命令定位的。
数据库清理:删掉那几篇菠菜文章、删掉那个"wpmanager"用户、清理了wp_options里被注入的加密代码。我在wp_options里还发现了一个叫"rewrite_rules"的option里被多加了十几条指向菠菜域名的301跳转规则——这个比较隐蔽,通过SELECT * FROM wp_options WHERE option_value LIKE '%http%' AND option_value NOT LIKE '%站点域名%'查出来的。
第四步:加固(1小时)
排查入侵入口。我这个案例后来确认是从一个2022年就不再更新的付费插件进来的——那个插件有个文件上传漏洞,CVE编号是2022年就公开的。也就是说,黑客不是"破了"什么,而是"走正门"进来的——插件本身的漏洞相当于门没关。
做的加固措施:删掉所有未使用的主题和插件(只留正在用的1个主题+8个插件);把WordPress、主题、插件全部更新到最新版;wp-config.php加上define('DISALLOW_FILE_EDIT', true)禁止后台编辑文件;上传目录禁用PHP执行(在.htaccess里加php_flag engine off);安装了Wordfence并做了完整扫描;修改了所有密码——数据库、FTP、WordPress后台,还加了双重认证。
第五步:通知Google和恢复收录(30分钟)
清理完了不代表事情结束——Google的搜索结果里还挂着那些菠菜内容。需要去Search Console提交"请求重新审核",触发Google重新抓取全站。同时提交更新的sitemap。这个客户的情况,等了大概两天,那些菠菜摘要才从搜索结果里消失。
最后说一句:被挂马不是"会不会"的问题,是"什么时候"的问题。做好备份、保持更新、定期检查——省不了,也省不得。
标签: 网站安全 挂马排查 WordPress安全 网站恢复
还木有评论哦,快来抢沙发吧~