rootdirective-sec/cve-2026-5718-Lab
GitHub: rootdirective-sec/cve-2026-5718-Lab
针对 CVE-2026-5718 的本地 Docker 漏洞复现与对比环境,通过漏洞版与修复版并置演示 WordPress 插件非 ASCII 文件名绕过上传黑名单导致任意文件上传的原理及修复效果。
Stars: 0 | Forks: 0
# CVE-2026-5718 本地 Docker 实验环境
针对 **CVE-2026-5718** 的仅限本地的漏洞版与已修复版 Docker 实验环境,该漏洞影响 WordPress 插件 **Drag and Drop Multiple File Upload for Contact Form 7**。
本实验环境在纯 Docker 环境中,使用最小危害的 PHP 执行证明演示了漏洞版本 `1.3.9.6` 与已修复版本 `1.3.9.7` 之间的差异。
## 概要
CVE-2026-5718 是 Drag and Drop Multiple File Upload for Contact Form 7 插件中存在的一个任意文件上传漏洞,影响至 `1.3.9.6` 及其之前的版本。
当配置了自定义黑名单类型且文件名包含非 ASCII 字符时,会触发此问题。在漏洞版本中,危险的 `.php` 文件上传可以绕过既定的保护机制并保持可执行状态。`1.3.9.7` 版本通过拒绝此类上传修复了该问题。
本仓库在本地运行两个 WordPress 服务:
* 运行在 `http://localhost:8081` 的 `vuln`,使用插件版本 `1.3.9.6`
* 运行在 `http://localhost:8082` 的 `patched`,使用插件版本 `1.3.9.7`
## 实验环境架构
```
Host
├── http://localhost:8081 -> vulnerable WordPress service
└── http://localhost:8082 -> patched WordPress service
Docker network
├── vuln
├── vuln-db
├── patched
└── patched-db
```
| 服务 | 用途 | 主机端口 | 版本 |
| ------------ | ---------------------------- | -------: | ---------------- |
| `vuln` | 含漏洞的 WordPress 实验环境 | `8081` | 插件 `1.3.9.6` |
| `patched` | 已修复的 WordPress 实验环境 | `8082` | 插件 `1.3.9.7` |
| `vuln-db` | 漏洞服务的 MySQL 数据库 | 内部网络 | MySQL 8.0 |
| `patched-db` | 已修复服务的 MySQL 数据库 | 内部网络 | MySQL 8.0 |
## 仓库结构
```
.
├── docker-compose.yml
├── patched
│ └── Dockerfile
├── poc
│ └── poc.py
│ └── requirements.txt
├── scripts
│ └── seed-wordpress.sh
├── vuln
│ └── Dockerfile
```
## 漏洞流程
内置的 Contact Form 7 表单包含一个 Drag and Drop Multiple File Upload 字段:
```
[mfile upload-file filetypes:* blacklist-types:zip limit:1048576]
```
该 PoC 上传了一个名为以下内容的 PHP 证明文件:
```
proof-β.php
```
`β` 字符是非 ASCII 字符。这一点很重要,因为该漏洞依赖于对非 ASCII 输入的文件名处理方式。
高级流程:
```
PoC
↓
Fetch lab page and extract DnD CF7 AJAX nonce
↓
Upload proof-β.php through wp-admin/admin-ajax.php
↓
Vulnerable 1.3.9.6 accepts and stores the file as .php
↓
PoC requests the uploaded file
↓
Vulnerable lab executes the PHP proof as www-data
```
已修复版本的流程:
```
PoC
↓
Upload the same proof-β.php file
↓
Patched 1.3.9.7 rejects the upload
↓
No PHP file is stored and no code execution occurs
```
## 本地 RCE 证明设计
上传的 PHP 证明文件被刻意保持在最简状态:
```
```
该证明仅运行 `whoami` 和 `id` 以展示执行上下文。它没有使用反向 shell、持久化、凭据访问、横向移动、网络扫描或破坏性操作。
漏洞服务特意允许在插件上传目录中执行 PHP,以便在此本地实验环境中能够观察到影响。已修复的服务则保持更安全的行为,并在应用验证层拒绝上传。
## 环境要求
* Docker Desktop
* Docker Compose v2
* Python 3
安装 Python 依赖:
```
python3 -m venv .venv
source .venv/bin/activate
pip install -r poc/requirements.txt
```
## 构建与运行
从干净状态启动:
```
docker compose down -v
docker compose up --build -d
```
检查服务状态:
```
docker compose ps
```
打开实验页面:
```
http://localhost:8081/cve-2026-5718-lab/
http://localhost:8082/cve-2026-5718-lab/
```
## 运行 PoC
针对漏洞服务运行:
```
python poc/poc.py --base-url http://localhost:8081
```
针对已修复服务运行:
```
python poc/poc.py --base-url http://localhost:8082
```
该 PoC 仅接受 localhost 或环回目标地址。
## 预期结果
### 漏洞服务
预期行为:
* 上传被接受。
* 上传的文件名仍为 `.php` 文件。
* 上传的 PHP 证明以 Web 服务器用户的身份执行。
示例输出:
```
Upload response:
{"success":true,"data":{"path":"cve5718proof","file":"proof-\u03b2.php"}}
Proof response:
CVE_2026_5718_LOCAL_RCE_PROOF
whoami=www-data
id=uid=33(www-data) gid=33(www-data) groups=33(www-data)
[result] VULNERABLE behavior observed: uploaded PHP proof executed.
```
### 已修复服务
预期行为:
* 相同的上传被拒绝。
* PHP 证明文件不会作为可执行文件存储。
* 未发生代码执行。
示例输出:
```
Upload response:
{"success":false,"data":"Uploaded file is not allowed for file type"}
[result] Upload rejected by the application.
[result] Reason: Uploaded file is not allowed for file type
```
## 安全提示
此实验环境有意限制为仅用于本地测试。
该 PoC:
* 阻止非 localhost 的目标地址,
* 不使用反向 shell,
* 不执行持久化操作,
* 不读取机密信息,
* 不扫描网络,
* 仅在漏洞容器内执行 `whoami` 和 `id`。
漏洞服务放宽了上传目录的 PHP 执行限制,仅仅是为了使本地证明可被观察。请勿将此配置复制到生产环境中。
## 清理
停止容器:
```
docker compose down
```
移除容器和卷:
```
docker compose down -v
```
移除 Python 虚拟环境:
```
rm -rf .venv
```
## 参考
* NVD: CVE-2026-5718
[https://nvd.nist.gov/vuln/detail/CVE-2026-5718](https://nvd.nist.gov/vuln/detail/CVE-2026-5718)
* Patchstack 公告: WordPress Drag and Drop Multiple File Upload for Contact Form 7 Plugin <= 1.3.9.6 - Unauthenticated Arbitrary File Upload via Non-ASCII Filename Blacklist Bypass
[https://patchstack.com/database/wordpress/plugin/drag-and-drop-multiple-file-upload-contact-form-7/vulnerability/wordpress-drag-and-drop-multiple-file-upload-for-contact-form-7-plugin-1-3-9-6-unauthenticated-arbitrary-file-upload-via-non-ascii-filename-blacklist-bypass-vulnerability](https://patchstack.com/database/wordpress/plugin/drag-and-drop-multiple-file-upload-contact-form-7/vulnerability/wordpress-drag-and-drop-multiple-file-upload-for-contact-form-7-plugin-1-3-9-6-unauthenticated-arbitrary-file-upload-via-non-ascii-filename-blacklist-bypass-vulnerability)
* Wordfence Intelligence: Drag and Drop Multiple File Upload for Contact Form 7 <= 1.3.9.6 - Unauthenticated Arbitrary File Upload via Non-ASCII Filename Blacklist Bypass
[https://www.wordfence.com/threat-intel/vulnerabilities/wordpress-plugins/drag-and-drop-multiple-file-upload-contact-form-7/drag-and-drop-multiple-file-upload-for-contact-form-7-1396-unauthenticated-arbitrary-file-upload-via-non-ascii-filename-blacklist-bypass](https://www.wordfence.com/threat-intel/vulnerabilities/wordpress-plugins/drag-and-drop-multiple-file-upload-contact-form-7/drag-and-drop-multiple-file-upload-for-contact-form-7-1396-unauthenticated-arbitrary-file-upload-via-non-ascii-filename-blacklist-bypass)
* GitHub 公告数据库: GHSA-xj7v-jqv6-v48w
[https://github.com/advisories/GHSA-xj7v-jqv6-v48w](https://github.com/advisories/GHSA-xj7v-jqv6-v48w)
* WordPress.org 插件页面: Drag and Drop Multiple File Upload for Contact Form 7
[https://wordpress.org/plugins/drag-and-drop-multiple-file-upload-contact-form-7/](https://wordpress.org/plugins/drag-and-drop-multiple-file-upload-contact-form-7/)
* 插件供应商页面: Drag & Drop Multiple File Upload for Contact Form 7
[https://www.codedropz.com/drag-drop-multiple-file-upload-for-contact-form-7/](https://www.codedropz.com/drag-drop-multiple-file-upload-for-contact-form-7/)
## 免责声明
本仓库仅用于教育和防御性安全研究。其设计为仅通过 Docker 在 localhost 上运行。请勿将此 PoC 用于公共或第三方系统。
标签:CISA项目, Contact Form 7, CVE-2026-5718, Docker, Docker Compose, Drag and Drop Multiple File Upload插件, Maven, PHP代码执行, PoC, Python, Web安全, WordPress漏洞, 任意文件上传, 安全实验环境, 安全防御评估, 安全靶场, 提示词注入, 文件上传绕过, 文件完整性监控, 无后门, 暴力破解, 漏洞复现, 漏洞验证, 版本对比, 版权保护, 蓝队分析, 请求拦截, 足迹探测, 非ASCII字符, 黑名单绕过