
Laboratorio local basado en Docker que reproduce CVE-2026-87902, un path traversal en plantillas de página de WordPress que conduce a la inclusión local de archivos PHP y a RCE basado en PEAR, con un script PoC.
复现 CVE-2026-87902(WordPress 页面模板解析路径穿越 → 本地 PHP 文件包含 → pearcmd 写文件 RCE)的本地 Docker 靶场。
⚠️ 仅供授权环境下的安全学习与研究。只能在本地 Docker 里运行,禁止对任何未授权目标使用。漏洞已于 2026-09-22 由官方修复,所有受支持分支均已发布补丁。
get_page_template() aplica un segundo urldecode() al parámetro pagename controlable por el usuario y lo concatena en los nombres candidatos de plantilla; locate_template() usa file_exists() para encontrar el archivo y, antes de cargarlo, solo realiza comprobaciones de realpath/sufijo/legibilidad, sin verificar que la ruta siga dentro del directorio del tema (hay canonicalización, pero no contención)| # | 条件 | 本靶场如何满足 |
|---|---|---|
| 1 | 已发布、未指定自定义模板的页面 | setup.sh 自动创建并清理示例页 |
| 2 | 活动主题顶层有 page-* 目录 | theme/mytheme/page-templates/(激活主题含此目录) |
| 3 | 可读的 /usr/local/lib/php/pearcmd.php | 官方 php 镜像自带 PEAR |
| 4 | register_argc_argv=On + 可写落点 | 官方镜像无 php.ini,编译默认值 On;/tmp 可写 |
docker compose up -d # 首次自动拉取镜像(约 1GB)
sh setup.sh # 装机 + 埋 /flag + 验证四条件
python cve-2026-87902.py --url http://127.0.0.1:8091
预期输出:
[*] page id : 4 (about, default template, via /index.php?rest_route=...)
[*] depth 7 : stage 1 HTTP 200, stage 2 HTTP 200
[+] marker : 'CVE-2026-87902-POC-OK' found 12 time(s) in the stage-2 response
[+] EXPLOIT SUCCESSFUL - PHP executed with the web-server account's privileges
(12 次 = PEAR 配置文件有 12 个配置项,每项都嵌了一份 payload)
查看 stage 1 由 PEAR 写出的文件(#PEAR_Config 0.9 开头的 serialize 文本,payload 以普通字符嵌在 12 个配置项里):
docker compose exec wordpress cat /tmp/wp-pear-rce-flag.php
register_argc_argv=On hace que la query string se divida en $argv por +, y pearcmd cree que se le está invocando desde una terminal; config-create <root> <file> escribe root (con código PHP incrustado) tal cual en el archivo destino<?=...?> y se lee /flag para mostrarloCVE-2026-87902-POC-OK (ubicada en /flag del contenedor)setup.sh con Git Bash彻底清理(容器 + 数据卷 + 镜像):
docker compose down -v --rmi all
docker-compose.yml WordPress 7.0.2-php8.3-apache + MySQL 8.4 + wp-cli
theme/mytheme/ 实验主题(含 page-templates/ 目录,条件②)
cve-2026-87902.py PoC(来自 ressl/cve-2026-87902-poc,版权归原作者)
setup.sh 一键装机 + 四条件自检