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

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

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

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2026-87902 — 扫描 WordPress Core 4.7.0–7.1.1 中通过双重编码 pagename 路径遍历触发的 CVE-2026-87902 未认证 LFI,并可选进行 PEAR config-create RCE 提权与批量扫描。 | Kitploit
工具/GitHubGitHub/langz337/cve-2026-87902
侦察漏洞扫描器Web漏洞扫描器漏洞利用Web应用程序漏洞利用信息收集Web安全渗透测试远程访问工具
GitHublangz337/cve-2026-87902

CVE-2026-87902

扫描 WordPress Core 4.7.0–7.1.1 中通过双重编码 pagename 路径遍历触发的 CVE-2026-87902 未认证 LFI,并可选进行 PEAR config-create RCE 提权与批量扫描。

11个月前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
查看仓库

CVE-2026-87902 — WordPress 核心未授权本地文件包含(LFI → 条件性 RCE)

WordPress 核心 get_page_template() / locate_template() 路径遍历漏洞利用工具

仅限授权安全测试使用。未经授权访问计算机系统属于违法行为。


漏洞概述

项目详情
CVE IDCVE-2026-87902
GHSA IDGHSA-7hp8-65ch-5whp
漏洞类型CWE-98 — 包含/引用文件名控制不当
CVSS v3.18.1(高危)/ CVSS 4.0:9.2(严重)
受影响组件WordPress 核心
受影响版本4.7.0 至 7.1.1(所有分支)
修复版本7.1.2(以及向下回溯至 4.7.37 的版本)
所需认证无(未授权)
攻击向量单个 GET 请求
发现者Robert Ressl(通过 WordPress HackerOne 项目)
披露日期2026 年 9 月 22 日
已在野利用是 — 已列入 CISA KEV 目录

CVE-2026-87902 是 WordPress 核心中的一个未授权路径遍历和本地文件包含(LFI)漏洞,影响自 2016 年以来发布的每一个 WordPress 版本(4.7.0 至 7.1.1)。攻击者无需任何账户或认证。通过构造恶意的 pagename 查询参数,攻击者可使 WordPress 的页面模板解析机制包含活动主题目录之外的任意可读 .php 文件。在特定服务器条件下(PHP register_argc_argv = On 且存在可读的 pearcmd.php),该漏洞可升级为远程代码执行(RCE)。


受影响版本

分支修复版本
4.7.x4.7.37
5.0.x5.0.29
5.3.x5.3.25
5.9.x5.9.18
6.0.x6.0.16
6.6.x6.6.9
6.9.x6.9.9
7.0.x7.0.6
7.1.x7.1.2

技术细节

根本原因

该漏洞位于 wp-includes/template.php 中的 get_page_template()。当存在 pagename 查询变量时,该函数会构造 page-{$pagename}.php,但未能对该值调用 validate_file() 以检查目录遍历。随后,候选文件名被传递给 locate_template(),后者将其与主题目录路径拼接,并且仅检查 file_exists() — 它并不验证解析后的路径是否仍位于主题目录内。因此,包含 ../ 的模板名称可以解析到活动主题之外的可读 PHP 文件,并被包含和执行。

调用链

GET /?page_id=<已发布页面>&pagename=<双重编码遍历载荷> → WP_Query 解析 page_id,匹配已发布页面(避免 404) → get_page_template() 对 pagename 执行 urldecode(),构造 page-{$pagename}.php → locate_template() 将候选路径与主题目录拼接,通过 file_exists() 解析 → template-loader 执行 realpath() + include

双重编码绕过

WordPress 对 pagename 应用 sanitize_title_for_query(),该函数将字面点号(.)替换为连字符(-)以阻止遍历。它作用于已解码一次的输入,且不会递归解码。攻击者发送 %252e%252e%252f(双重编码的 ../):

  1. Web 服务器解码一次:%252e → %2e,%252f → %2f
  2. sanitize_title_for_query() 看到 %2e%2e%2f(无字面点号)并放行
  3. get_page_template() 内部再次调用 urldecode():%2e%2e%2f → ../
  4. 遍历序列生效

利用前提条件

  1. 活动主题(父主题或子主题)包含一个以 page- 开头的顶层目录(例如 page-templates/)。
  2. 至少存在一个已发布页面,其 ID 可作为 page_id 提供。
  3. 目标文件必须以 .php 结尾(WordPress 会追加扩展名)。

Windows 主机说明:Win32 会在词法层面规范化 ..,因此即使 page- 目录不存在,遍历也可能生效。在 Linux 上,该目录必须实际存在。

PEAR RCE 升级

条件:

  • PHP register_argc_argv 设置为 On
  • 服务器上存在可读的 pearcmd.php

攻击者通过 LFI 包含 pearcmd.php,并滥用其 config-create 命令向服务器写入一个 PHP 文件,然后再次通过 LFI 包含该文件以执行任意命令。


CVE 来源与披露

发现者

CVE-2026-87902 由常驻瑞士的安全研究员 Robert Ressl 发现并报告。

披露过程

于 2026 年 7 月通过 WordPress HackerOne 项目报告。WordPress 安全团队协调了修复工作,并于 2026 年 9 月 22 日随 WordPress 7.1.2 一同发布。

披露时间线

日期事件
2026 年 7 月Robert Ressl 通过 WordPress HackerOne 项目报告该漏洞
2026 年 9 月 22 日WordPress 7.1.2 发布并包含修复;安全公告发布
2026 年 9 月 22 日针对 7.0 至 4.7 分支的安全回溯补丁发布
2026 年 9 月 23 日攻击者开始探测存在漏洞的站点
2026 年 9 月 25 日CISA 将 CVE-2026-87902 加入 KEV 目录

工具功能

功能描述
版本指纹识别通过 meta generator、RSS 源、OPML、readme.html、资源 ?ver= 识别 WordPress 版本
智能版本判定使用修复版本映射判断目标是否处于受影响范围内
主题发现提取当前活动主题的 slug,检测父主题,发现 page-* 目录
页面 ID 发现通过 REST API、page-id- body class、短链接发现有效页面 ID
LFI 预言机验证使用 wp-links-opml.php 和 wp-trackback.php 等安全文件作为预言机,并配合阴性对照
双重编码路径遍历自动对 / 和 . 进行双重百分号编码,以绕过 sanitize_title_for_query()
PEAR RCE 利用尝试常见 PEAR 路径,通过 config-create 写入并执行标记文件
批量扫描对目标列表进行多线程并发扫描
结果输出将结果持久化到 vuln_lfi.txt 和 vuln_lfitorce.txt

环境要求

  • Python 3.10+
  • requests 库

pip install requests


使用方法

启动

python3 CVE-2026-87902.py

交互式菜单:

[1] Single Scan LFI [2] Single Scan LFI + RCE [3] Mass Scan LFI [4] Mass Scan LFI + RCE [5] Exit

单目标扫描(仅 LFI)

选择 [1],输入目标 URL:

url > https://target.example.com

单目标扫描(LFI + RCE)

选择 [2],输入 URL 和命令(默认为 id):

url > https://target.example.com cmd > id

批量扫描

选择 [3] 或 [4],输入包含目标 URL 的文件(每行一个,# 表示注释):

file > targets.txt

输出文件

文件内容
vuln_lfi.txt已确认的 LFI 目标
vuln_lfitorce.txt成功实现 RCE 的目标

配置

TIMEOUT = 8 # Request timeout (seconds) THREADS = 200 # Concurrent threads for mass scanning USE_ALL_ORACLES = False # Use all oracles (more accurate but slower)


修复建议

  1. 立即将 WordPress 升级到 7.1.2 或所在分支的最新版本。
  2. 如果无法立即升级:
    • 在 WAF 或反向代理层拦截 pagename 参数中包含 ..、%2e、%252e 的请求
    • 检查当前活动主题是否包含 page-* 目录
    • 确认 PHP 的 register_argc_argv 设置
  3. 启用 WordPress 自动后台更新。

免责声明

本工具仅用于经授权的安全测试和教育目的。用户必须确保已获得目标系统的明确书面授权。未经授权的使用可能违反 CFAA、英国《计算机滥用法》以及其他国家的类似法律。作者对任何滥用行为不承担任何责任。


参考

  • WordPress 7.1.2 安全版本发布公告
下载工具