真实复盘影子目录攻击——绕过WordPress固定链接劫持的手法

上个月我们接触到一个客户反馈的问题:网站打开一切正常,访客也看不出异常,但 Google 搜索结果里显示的却不是正常标题和摘要,而是赌场、博彩、药品之类的垃圾内容。

更离谱的是,这些内容没有出现在首页或文章页,而是出现在:About Us、Contact Us、Privacy Policy、Terms & Conditions等位置。

这些页面通常几年都不动一次,突然被污染,基本可以确定:不是普通的内容篡改,而是更隐蔽的"伪装型"攻击。

这就是我们这篇文章中要讲到的Shadow Directories(影子目录)------攻击者不改数据库、不动后台内容,而是利用服务器的目录优先级,直接劫持 WordPress 固定链接。

什么是 WordPress 固定链接(Permalink)?

WordPress 的固定链接,就是你文章或页面的"永久地址",例如:https://example.com/about-us/

它和早期那种硬编码链接(例如 ?p=103)区别很明显:

1.固定链接更易读、更利于 SEO

2.结构更稳定、可随设置调整

3.通常由 WordPress 的重写规则统一接管

重点是:在很多站点里,/about-us/ 这种路径并不是服务器上真实存在的文件夹,它只是"虚拟路径",最终仍交给 WordPress 的 index.php 来渲染页面。

我们一开始为什么查不到问题所在

客户使用的是Hostease的服务器,我们先检查了服务器相关安全设置,一切正常。然后按正常思路,又进 WP 后台看页面内容,无异常,查数据库 wp_posts,也没有问题,再看页面源代码:也没看到明显注入。

到这里就很难不让人怀疑,是不是Google抽风了?

直到我们试着把浏览器的 User-Agent 改成 Googlebot,再打开同一个 About Us 页面,原本正常的公司介绍,瞬间变成了完整的博彩垃圾页。

这时候就可以确定:

网站在"识别访问者身份",对搜索引擎展示垃圾内容,对普通用户展示正常内容。

这类行为通常被称为 Cloaking(伪装/障眼法)。

影子目录是怎么劫持固定链接的?

我们进入网站根目录后,发现了异常点:站点里居然出现了这些"真实目录":

/about-us/

/contact-us/

/privacy-policy/

注意:这些目录名,和 WordPress 固定链接一模一样。

正常情况下,一个标准 WordPress 站点不会在根目录创建这些页面同名文件夹。

但攻击者偏偏这么做了------这就是"影子目录"。

为什么创建同名目录就能劫持页面?

因为大多数服务器默认处理逻辑是:

1.如果路径对应一个真实目录/文件 → 直接优先返回它

2.如果不存在 → 才交给重写规则(WordPress)处理

于是当请求 https://example.com/about-us/ 时,服务器先看到"真实存在"的 /about-us/ 目录,直接执行该目录里的 index.php,WordPress 甚至都没机会接管请求。

你后台页面再干净、数据库再正常也没用------请求根本没走到 WordPress 那一层。

影子目录里都藏了什么?

每个影子目录里,我们都看到非常一致的三件套:

1.index.php:控制器(决定给谁看什么)

2.indexx.php:正常页面的"干净副本"

3.readme.txt:垃圾页面的完整源码(通常非常长)

它的工作逻辑很简单,但很阴:

当访问者像"搜索引擎爬虫"

index.php 识别到 UA(User-Agent)包含 Googlebot 等关键词 → 读取 readme.txt → 输出整页博彩垃圾内容,让搜索引擎收录。

当访问者像"人"

index.php 就 include indexx.php(正常页面的静态副本)→ 你看到的网站"完全正常"。

于是你会遇到最头疼的场景:你自己和用户看网站完全没有问题,但是搜索引擎看到的就是博彩网站。

这种攻击的危害:不是"挂马",而是"SEO 毒化"

影子目录攻击的目的通常不是勒索,也不是偷数据,而是利用你网站已有的权重在高信任页面(About/Contact 等)投放垃圾内容,让搜索引擎给它排名和流量,而你的网站则可能面临降权、索引污染、品牌信誉受损。更麻烦的是它能长期潜伏,因为你很难在日常访问中发现异常。

如何快速判断自己是否中招?

你可以用这几种方式自查:

1.Google 搜索结果出现博彩/药品/成人关键词,但站点正常

2.Search Console 里出现大量陌生页面/陌生摘要

3.用 curl 模拟 Googlebot 访问页面,内容不同

4.服务器根目录出现与固定链接同名的真实文件夹

5.同名文件夹里有 index.php + readme.txt 这种组合

我们是怎么修复的?(可直接照做)

第一步:删除影子目录

把所有与固定链接同名、你自己不认识的目录全部删除(连同里面的恶意文件)。

第二步:核对核心文件完整性

重点检查以下文件是否被篡改,是否有多余的include/外链:

index.php

.htaccess

wp-config.php

第三步:清理账户与权限

删除可疑管理员(尤其是叫 help / support / admin2 之类的)

检查文件权限,避免上传目录可执行 PHP

第四步:重置所有密码

WordPress和服务器相关的密码都进行重置,如WP 管理员密码、FTP/SFTP 密码、面板密码、数据库密码等,很多二次感染就是因为密码没改。

第五步:更新并做安全加固

更新 WP、主题、插件,安装 WAF(或安全插件 + 服务器层拦截),复查日志,找出首次入侵来源。

第六步:请求重新收录

清理完成后,建议在 Search Console 提交重新抓取与索引更新,尽快恢复搜索结果。

写在最后

这次案例最值得警惕的一点是:攻击者完全绕开 WordPress 本身,直接利用服务器规则"抢走路径解释权"。

所以安全排查别只盯着后台内容、数据库和插件,一定要把"文件系统"和"真实目录结构"也纳入日常检查。

相关推荐
fobwebs21 小时前
如何通过phpmyadmin指令来优化数据库表,给数据库“减肥”。
数据库·wordpress·数据库优化·phpmyadmin
Web极客码21 小时前
如何自定义WordPress主题,让你的网站更独特
主题·wordpress·网站
Web极客码1 天前
WordPress 图片库创建方法与优化策略
seo·主机·wordpress
WordPress学习笔记2 天前
wordpress网站上传不了图片可能是文件夹的权限的原因
运维·wordpress·文件夹权限·uploads·wordpress上传错误
syjy22 天前
Avada wordpress主题使用教程(含下载)
wordpress·建站·wordpress主题
WordPress学习笔记2 天前
一个漂亮的教育培训行业wordpress主题
wordpress·教育网站模板
WordPress学习笔记3 天前
专业建外贸网站的公司推荐
wordpress
WordPress学习笔记3 天前
专业建wordpress网站的公司
wordpress
PyAIGCMaster4 天前
全自动seo发文网站测试记录
react native·seo·wordpress·自动发文
syjy25 天前
2026 WordPress加速插件推荐(含下载)
wordpress·wordpress插件·wp加速插件