搜索全站
安全防护 9 分钟阅读

网站被挂马跳转博彩页怎么清理恶意代码(附排查命令)

网站打开就跳转到博彩、赌博页面,从搜索引擎点进来也被劫持?这是典型的 WordPress 挂马。本文从常见的入侵路径讲起,手把手教你用命令和工具查出后门文件、清理被注入的恶意代码、加固站点,并快速重新向搜索引擎提交解除标记,恢复网站正常访问。

U
UFO_PF 2026-10-10 · 阅读 9 分钟
网站 安全防护
阅读提示
本文约 3,495 字,预计阅读 9 分钟。文中命令与配置均经过实测,可直接参考执行。

引言

辛苦运营的网站,突然有访客反馈说点进去自动跳到了博彩、赌博页面;你自己用手机、电脑访问首页却一切正常,只有从百度、Google 搜索结果点进来才会被劫持。这种「你看着正常、别人看着被黑」的现象,是 WordPress 被挂马最典型的表现。攻击者通常不会把整站替换掉,而是偷偷在前台文件、数据库或主题里塞进一小段代码,它识别搜索引擎爬虫和陌生访客的来源,命中条件就 302 跳转到博彩站点,你在本地反复刷新反而看不到。很多站长第一反应是改后台密码,结果密码改了跳转照旧,因为后门文件还在,攻击者随时能重新进来。本文从入侵路径讲到电脑前的逐步命令行排查,把恶意代码和后门一次清干净,让网站恢复正常。

故障原因分析

  1. 主题与插件文件被注入 PHP 后门。攻击者拿到写入权限后,会把一小段加密代码塞进 functions.php、header.php 或某个不起眼的插件文件里,靠 eval、base64_decode、gzinflate 动态执行,正常扫描很难一眼看出来。
  1. 数据库被写入恶意内容。wp_options 表的 siteurl、home 极端情况下会被改,但更常见的是往文章正文、wp_posts、wp_options 的某个自定义选项里塞 <script> 或 <iframe>,页面渲染时就带上跳转代码。
  1. .htaccess 被改写做条件跳转。网站根目录的 .htaccess 里被追加了 RewriteCond 规则,专门判断 HTTP_REFERER 来自百度或 Google 时再跳转,这就是「只有搜索流量被劫持」的元凶。
  1. 上传目录藏着木马。wp-content/uploads 本该只存图片,攻击者把 .php 伪装成图片后缀放进去,再通过后门文件远程调用,实现持续控制。
  1. 弱口令或旧版插件漏洞是入口。管理员密码太简单、主题插件长期不更新,攻击者通过暴力破解或已知漏洞拿到权限后,留下 WebShell 供反复进入。

分步解决方案

方法一:先隔离、先备份,别急着删

第一步不是删代码,而是防止攻击者在你清理时二次进入。立即登录服务器改掉面板密码、SSH 密码,改掉 WordPress 管理员密码,同时把网站整体打包备份一份,留作对比和追查。备份命令:

cd /www/wwwroot
tar -czf site_backup_$(date +%F).tar.gz yoursite.com

方法二:找出最近被改动的文件

挂马文件通常有较新的修改时间,先按时间筛出可疑目标:

cd /www/wwwroot/yoursite.com

# 列出最近 10 天被修改过的 php 文件
find . -type f -name "*.php" -mtime -10 -ls

# 按修改时间排序,最新的一批排在最前
find . -type f -name "*.php" -printf '%TY-%Tm-%Td %p\n' | sort -r | head -50

正常情况下,除了你刚更新的插件和主题,其他 php 文件的修改时间应该停留在很久以前。突然冒出来的新文件就是高度可疑对象。

方法三:用特征字符串定位后门

后门常见的特征函数是 eval、assert、base64_decode、gzinflate、str_rot13、create_function、shell_exec、passthru。全局搜一遍:

grep -rn --include="*.php" -E "eval\(|base64_decode\(|gzinflate\(|str_rot13\(|create_function\(|shell_exec\(|passthru\(" . | grep -v "wp-includes" | head -50

同时搜跳转关键字:

grep -rn --include="*.php" -E "header\(.*Location|window\.location|<script|<iframe" . | head -50

只要出现「一长串乱码 + eval」的组合,基本就是后门,直接记下路径。

方法四:检查 .htaccess 有没有被偷偷改写

打开网站根目录的 .htaccess,重点看有没有你不认识的 RewriteCond %{HTTP_REFERER} 规则:

# 被挂马后常见的一段:来自搜索引擎就跳转
RewriteCond %{HTTP_REFERER} (baidu|google|sogou) [NC]
RewriteRule ^(.*)$ https://xxx-bocai.com/ [R=302,L]

把这类规则整段删除,只保留 WordPress 自带的标准规则(以 # BEGIN WordPress 开头、# END WordPress 结尾那一段)。

方法五:清理数据库里的恶意注入

用 phpMyAdmin 或命令行查一遍敏感表:

-- 查找文章里被塞入的 script 或 iframe
SELECT ID, post_title FROM wp_posts WHERE post_content LIKE '%<script%' OR post_content LIKE '%<iframe%';

-- 查找 options 表里的异常脚本
SELECT option_name FROM wp_options WHERE option_value LIKE '%<script%' OR option_value LIKE '%eval(%';

-- 检查站点地址有没有被篡改
SELECT option_name, option_value FROM wp_options WHERE option_name IN ('siteurl','home');

如果表前缀不是 wp_,请替换成 wp-config.php 里 $table_prefix 对应的实际前缀。找到被污染的记录后手工删除注入片段,或从备份还原该条内容。

方法六:断掉攻击者的登录态,重换密钥

恶意代码清理干净后,一定要让攻击者留下的所有会话失效。修改 wp-config.php 里的八组安全密钥,把旧的随机字符串全部替换掉(可用 WordPress 官方密钥生成器获得新值);随后在后台「用户」里把所有管理员密码重置,并删除来路不明的账号。密钥一换,此前被盗用的登录 Cookie 立即作废。

方法七:用安全插件做一次全盘扫描并加固

安装 Wordfence 或 Sucuri Security,运行一次完整扫描,让插件按特征库再兜底找一遍漏网后门文件。扫描通过后,开启防火墙规则。之后把 WordPress 核心、主题、插件全部升级到最新版本,堵住被利用的旧漏洞。最后登录百度搜索资源平台和 Google Search Console 提交死链与安全复审,让跳转标记尽快消失。

常见踩坑点

  1. 只删可见的跳转代码,不清理后门文件。攻击者留下的 WebShell 还在,几天后照样重新挂马,必须把可疑 php 文件一并处理。
  1. 不备份就直接删。误删了正常文件导致白屏,又没法回溯,所以动手前打包备份是底线。
  1. 只改后台密码,不换安全密钥。旧 Cookie 没失效,攻击者可能仍处于登录状态,换密钥才能真正踢人。
  1. 用错误的方式恢复.htaccess。很多站长把整个文件删掉,结果是伪静态失效、内页全 404,正确做法是只删被追加的恶意规则段。
  1. 忽略 uploads 目录。图片马藏在里面很隐蔽,要按后缀排查可疑的 php、phtml、php5 文件并删除。
  1. 清理完不升级版本。漏洞补丁没打,等于开着门清理,很快会被再次入侵。

总结

WordPress 挂马跳转博彩页面,本质是攻击者在文件、数据库或 .htaccess 里埋了条件跳转与后门。处理顺序是「先用 tar 备份并改密码隔离,再按修改时间和特征函数查找后门,清理 .htaccess 与数据库注入,最后更换 wp-config.php 安全密钥、用 Wordfence 兜底扫描并升级所有版本」。整个过程最忌讳只删表面跳转代码就以为万事大吉,留下后门等于白忙。把这套 WordPress 挂马清理流程走完,再向搜索引擎提交复审,网站通常几天内就能恢复正常收录与访问。

U
UFO_PF作者

专注 WordPress 生态的实战作者,内容以「可复制、可验证」为第一原则。

留下你的想法

邮箱地址不会被公开。带 * 的为必填项。