WordPress路径遍历漏洞:无需登录即可RCE

admin 2026-09-28 05:13:54 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: WordPress核心存在无需登录的路径遍历漏洞CVE-2026-87902,CVSS9.2分,影响4.7.0至7.1.1版本。攻击者通过双重URL编码绕过模板解析限制,可包含任意本地PHP文件,结合pearcmd.php实现远程代码执行,已观测到在野利用。建议立即升级至修复版本,检查主题page-*目录及pearcmd.php,并监控双重编码请求日志。 综合评分: 92 文章分类: 漏洞分析,web安全,应急响应,漏洞预警


WordPress 路径遍历漏洞:无需登录即可 RCE

撅人

2026年9月25日 09:41 广东

在小说阅读器读本章

去阅读

在公众号小说中沉浸阅读

WordPress 路径遍历漏洞:无需登录即可 RCE

CVE-2026-87902 · CVSS 9.2 分(Critical)· POC 已公开

1

漏洞速览

CVE 编号CVE-2026-87902

漏洞类型路径遍历 + 本地文件包含

影响产品WordPress Core

安全等级Critical(严重)

CVSS v4.09.2

披露时间2026-09-22

受影响版本4.7.0 至 7.1.1

修复版本7.1.2(及所有分支回移植版本)

利用情况POC 已公开,已在野利用

发现者Robert Ressl(Wordfence)

2

漏洞概述

WordPress 是全球使用最广泛的内容管理系统,截至 2026 年全球超过 43% 的网站基于 WordPress 构建。2026 年 9 月 22 日,WordPress 安全团队披露了一个 无需登录即可利用 的路径遍历漏洞(CVE-2026-87902),CVSS v4.0 评分高达 9.2 分(Critical)。

攻击者无需任何 WordPress 账号,即可在页面模板解析过程中使服务端包含 当前主题目录以外、Web 账户可读的本地 PHP 文件。如果当前主题存在名称以 page- 开头的顶层目录,且服务器上存在可利用的本地 PHP 文件,则可进一步导致 远程代码执行(RCE) 和站点完全控制。

已观察到的攻击链:漏洞披露后数小时内,攻击者利用 pearcmd.php(PHP PEAR 包管理工具)实现从文件包含到命令执行的跨越,并通过 register_argc_argv=On 配置将请求参数传递给 PEAR,最终写入并执行恶意 PHP 文件。Patchstack 于 9 月 23 日观察到从侦察到实际入侵的升级,攻击流量已超过初始量的 十倍。

3

详细漏洞分析

第一层:页面模板解析机制

WordPress 根据页面内容自动选择模板文件。当用户访问一个页面时,WordPress 调用 get_page_template() 函数,从 URL 中提取 pagename 查询参数,构建候选模板文件名。例如访问 ?pagename=about,WordPress 会尝试加载 page-about.php。

问题在于:WordPress 对 pagename 执行了双重 URL 解码。Web 服务器已经对请求参数进行了一次 URL 解码,WordPress 又调用了一次 urldecode()。攻击者可以提交双重编码的 ../ 序列,使它在最终模板名解析时变成路径遍历符号。

// 漏洞代码(WordPress < 7.1.2) $pagename = $_GET[‘pagename’]; $pagename_decoded = urldecode(urldecode($pagename));  // 双重解码 $templates[] = “page-{$pagename_decoded}.php”;

第二层:路径遍历攻击原理

WordPress 将构建的候选模板名传给 locate_template() 函数。在受影响版本中,该函数将候选文件路径拼接到主题目录路径下,检查文件是否存在,但没有验证解析后的路径是否仍在主题目录内。如果文件名包含 ../,就可以跳出主题目录,指向服务器上的任意可读文件。

但漏洞利用需要满足两个关键条件:

条件一:当前父主题或子主题必须包含一个名称以 page- 开头的顶层目录,例如 page-templates。WordPress 模板解析逻辑要求模板候选名必须以 page- 开头。

条件二:服务器上必须存在一个可被 Web 账户读取、且在包含后能产生有用行为的 PHP 文件。

第三层:远程代码执行链

攻击者通过双重 URL 编码构造路径遍历请求,使 locate_template() 包含服务器上的恶意 PHP 文件。目前已知最有效的利用路径是通过 pearcmd.php:

步骤 1 — 攻击者发送双重编码的请求,使 WordPress 模板解析跳转到 /usr/local/lib/php/pearcmd.php

↓

步骤 2 — pearcmd.php 被包含,由于 register_argc_argv=On,请求参数被暴露为 PEAR 命令行参数

↓

步骤 3 — 利用 PEAR 的 package-install 功能写入攻击者控制的 PHP 代码到服务器

↓

步骤 4 — 通过访问写入的 PHP 文件,完成 远程代码执行(RCE)

受影响的主题:官方安全公告特别提到了以下主题存在 page-* 目录结构:

Twenty Twelve、Twenty Fourteen(WordPress 官方遗留主题)、Neve、Hestia、Sydney(第三方热门主题)。

受影响的环境:官方 PHP Docker 镜像、PHP 8.5 之前的默认 cPanel 配置,均暴露了可利用的 pearcmd.php 文件。

4

快速自查命令

① 检查 WordPress 核心版本

检查方法:登录 WordPress 后台 → 仪表板 → 查看版本信息

或命令行:检查 /wp-includes/version.php 文件中的 $wp_version 变量

② 检查主题是否含有 page-* 目录

find /path/to/wp-content/themes -maxdepth 1 -name “page-*” -type d

若存在输出,说明当前主题可能满足漏洞利用条件

③ 检查 pearcmd.php 是否存在且可被 Web 账户读取

find / -name “pearcmd.php” 2>/dev/null | xargs ls -la

若该文件存在且对 Web 进程用户可读,存在被利用风险

④ 检查 PHP register_argc_argv 配置

php -r “echo ini_get(‘register_argc_argv’);” && echo

若输出为 1 或 On,存在利用条件

⑤ 检查 Web 日志中的可疑请求

grep -r “page-.*%252e%252e” /var/log/nginx/ /var/log/apache2/

搜索包含双重编码 ../ 的 pagename 参数请求

5

修复方案

WordPress 安全团队已修复该漏洞,7.1.2 为最新修复版本,且所有分支均回移植了安全补丁。请根据当前使用的 WordPress 版本,升级到对应的修复版本:

受影响版本 → 修复版本

7.1.0 至 7.1.1 → 7.1.2

7.0.0 至 7.0.5 → 7.0.6

6.9.0 至 6.9.8 → 6.9.9

6.8.0 至 6.8.9 → 6.8.10

6.7.0 至 6.7.8 → 6.7.9

6.6.0 至 6.6.8 → 6.6.9

6.5.0 至 6.5.11 → 6.5.12

6.4.0 至 6.4.11 → 6.4.12

6.3.0 至 6.3.11 → 6.3.12

6.2.0 至 6.2.12 → 6.2.13

6.1.0 至 6.1.13 → 6.1.14

6.0.0 至 6.0.15 → 6.0.16

5.9.0 至 5.9.17 → 5.9.18

5.8.0 至 5.8.16 → 5.8.17

5.7.0 至 5.7.18 → 5.7.19

5.6.0 至 5.6.20 → 5.6.21

5.5.0 至 5.5.21 → 5.5.22

5.4.0 至 5.4.22 → 5.4.23

5.3.0 至 5.3.24 → 5.3.25

5.2.0 至 5.2.27 → 5.2.28

5.1.0 至 5.1.25 → 5.1.26

5.0.0 至 5.0.28 → 5.0.29

4.9.0 至 4.9.32 → 4.9.33

4.8.0 至 4.8.31 → 4.8.32

4.7.0 至 4.7.36 → 4.7.37

升级操作步骤

步骤 1:备份当前 WordPress 站点文件和数据库

步骤 2:下载对应分支的修复版本,覆盖上传核心文件(或执行 wp core update)

步骤 3:访问 WordPress 后台 → 仪表板,确认版本号已更新到修复版本

步骤 4:检查 Web 日志,确认无异常访问请求

步骤 5:如使用自动后台更新,务必人工验证更新是否成功

6

安全提醒

双重 URL 解码陷阱

WordPress 对 pagename 参数执行了额外的一次 URL 解码,使双重编码的 ../ 在模板解析时生效。安全开发者应避免对已解码的参数再次解码,或在解码后进行路径合法性校验。

路径遍历防护原则

locate_template() 在解析模板路径后,未验证最终路径是否在合法主题目录内。核心防护应在路径拼接后调用 realpath() 并校验路径前缀,确保不会跳出授权目录。

PEAR 与 PHP 环境安全

pearcmd.php 是 PHP 的命令行工具,但可通过 Web 服务器包含。建议:(1)禁用register_argc_argv 配置;(2)从 Web 可读路径移除或限制访问pearcmd.php;(3)升级至 PHP 8.5+(官方已修复相关利用链)。

主题目录结构审查

自定义主题时应避免使用 page-* 作为顶层目录名称。如需存放页面模板相关资源,建议使用 templates/、page-templates/ 以外的命名约定,减少攻击面。

日志监控与应急响应

Patchstack 观察到:漏洞披露后数小时内即开始侦察,9 月 23 日升级为实际入侵。建议立即:(1)检查 Web 日志中是否包含双重编码 ../ 的请求;(2)搜索服务器上新创建的可疑 PHP 文件;(3)审查管理员账号、已安装插件和定时任务。

7

漏洞时间线

2026-09-22

WordPress 安全团队发布 7.1.2 及所有分支回移植版本,同步披露安全公告

2026-09-22

Wordfence Intelligence 将漏洞分配为 CVE-2026-87902,CVSS 9.2 分(Critical)

2026-09-22

Wordfence Premium/Care/Response 用户获得防火墙规则保护

2026-09-23

Patchstack 检测到从侦察到实际入侵的升级,攻击流量增长超十倍

2026-09-25

本文发布

8

参考链接

WordPress Core Security Advisory GHSA-7hp8-65ch-5whp

WordPress Core changeset 63792(修复提交)

Wordfence: Critical Unauthenticated Path Traversal Vulnerability Patched in WordPress Core

CyberWorldOps: Attackers Turn WordPress Template Flaw Into Remote Code Execution

CVE-2026-87902 官方记录(CVE.org)

WordPress Release Archive

本文信息来源为官方安全公告及第三方安全研究,仅供安全研究参考。实际利用情况可能因环境和配置而异,请及时更新到修复版本。


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。

本文转载自:撅人 《WordPress 路径遍历漏洞:无需登录即可 RCE》

如何启用代理修复 网络安全文章

如何启用代理修复

文章总结: 本文探讨AgenticRemediation在安全运营中的应用,指出传统CTEM模式中修复环节依赖人工导致发现与修复存在时间差。文章提出引入AIAg
评论:0   参与:  0