WPForms Pro <= 1.10.1.1 - 通过分块上传初始化/完成顺序缺陷实现的未认证任意文件写入
概念验证(PoC)漏洞利用
分块上传初始化/完成顺序缺陷 → 可预测路径暴露 → 远程代码执行
| 字段 | 详情 |
|---|---|
| CVE ID | CVE-2026-10818 |
| 受影响插件 | WPForms Pro (WordPress) |
| 受影响版本 | 1.10.1.1 及之前的所有版本 |
| 类型 | 未认证的任意文件写入 |
| CWE | CWE-434:危险类型文件的不受限制上传 |
| CVSS 3.1 | 8.1 HIGH(高危) — CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H |
| 认证 | 无需认证 |
WordPress 的 WPForms Pro 插件在 1.10.1.1 及之前的所有版本中,均可通过 ajax_chunk_upload_finalize 函数遭受任意文件上传攻击。这是因为文件类型验证发生在分块元数据和文件内容已经被写入磁盘之后,并且验证失败时不会删除已组装好的文件。这使得未认证攻击者能够上传可能可执行的文件,从而可能实现远程代码执行。
wpforms_upload_chunk_init → Metadata created BEFORE extension validation
wpforms_upload_chunk → Chunk bytes written regardless of init result
wpforms_file_chunks_uploaded → File assembled BEFORE type validation
→ File persists on disk even when validation fails
该漏洞链利用了分块上传生命周期中的一个关键顺序缺陷:
SHA1(UUID)-0.chunk)wp_ajax_nopriv_*)readme.txt 和 HTML 源码,识别存在漏洞的 WPForms 版本wpforms_upload_chunk_init 可从外部访问SHA1(UUID) 获得确定性的文件路径SHA1(客户端可控的 UUID),无需猜测即可推导出精确的分块 URL/wpforms/tmp/ 目录进行快照,以识别新写入的文件<32hex>.<ext> 文件名模式.chunk/x.php、/.php),以在非 PHP 扩展名上触发 PHP 执行Python >= 3.8
pip install requests urllib3 beautifulsoup4
beautifulsoup4为可选依赖,但推荐安装,以便更可靠地提取表单字段。
python CVE-2026-10818.py
程序会提示您输入以下内容:
| 提示 | 说明 | 默认值 |
|---|---|---|
| 目标文件 | 包含目标列表的文本文件路径,每行一个目标 | list.txt |
| 线程数 | 并发工作线程数(1–20) | 5 |
https://example.com
http://target.org
subdomain.example.net
192.168.1.100
https://example.com/wordpress
每行一个 URL。支持 http://、https://、裸域名、IP 及子目录安装。
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ ┃
┃ ██▄ ██ ██ ██ ┃
┃ ████ ██ ████ ┃
┃ ██ ██ ██ ██ ┃
┃ ██ ████ ████ ┃
┃ ██ ███ ██ ██ ┃
┃ ┃
┃ Nxploited ━ Khaled Alenazi ━ T.m @Kxploit ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ CVE-2026-10818 WPForms Pro ≤ 1.10.1.1 ┃
┃ Chunked Upload → Predictable Path → RCE ┃
┃ Results ━▸ Nx_hit/ ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
扫描过程中,每个目标会依次经历标记阶段:
02:14:52 ◆ target.com VER WPForms 1.9.3.1 vulnerable
02:14:53 ◆ target.com FORM 1 upload form(s) on /contact
02:14:53 ◆ target.com UPLOAD 6 safe + 5 exec payloads
02:14:55 ◆ target.com FIN poly_png → a8f3...1b22.png URL returned
02:14:57 ◆ target.com DIR listing enabled, 4 file(s) before exec upload
02:14:59 ◐ target.com EXEC shell_php → finalized on disk (hash unknown)
02:15:01 ◆ target.com DIR 1 NEW exec file(s) after upload!
● target.com SHELL dir-new:7c4f...e8a1.php https://target.com/wp-content/uploads/wpforms/tmp/7c4f...e8a1.php
所有结果都会保存到 Nx_hit/ 目录:
| 文件 | 内容 |
|---|---|
Nx_shell.txt | 已确认的 RCE — URL、标签及响应体预览 |
Nx_vuln.txt | 已确认的任意文件写入(未验证执行) |
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ COMPLETE 150 targets processed ┃
┃ ┃
┃ ● 3 shell ◐ 12 vuln ○ 85 skip ✗ 50 miss ┃
┃ ┃
┃ Results ━▸ Nx_hit/ ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
| 符号 | 含义 |
|---|---|
● shell | 已在远程目标上确认 PHP 执行 |
Target
│
├─ Reachability (HTTPS → HTTP fallback)
├─ WPForms Version Detection
├─ Form Discovery (100+ page paths + sitemap crawl)
├─ AJAX Route Validation
│
├─ Phase 1: Safe Uploads (png/jpg/pdf + finalize → URL)
│ └─ Shell verification on returned URLs
│
├─ Phase 2: Directory Snapshot (BEFORE)
│
├─ Phase 3: Exec Uploads (php/phtml/php5/phar/shtml + finalize)
│ ├─ Leaked filename extraction from response
│ └─ Hash pattern extraction from body + headers
│
├─ Phase 4: Directory Snapshot (AFTER) → Diff → New exec files
│ └─ Shell verification on each new file
│
├─ Phase 5: Hash Leak Verification
│ └─ Build URLs from leaked hashes → Shell check
│
├─ Phase 6: Chunk-Only Uploads (no finalize → predictable SHA1 path)
│ └─ Direct access + PATH_INFO bypass probing
│
└─ Result Classification (shell / vuln / skip / miss)
本工具严格仅供授权的安全测试和教育研究使用。请仅在您拥有或已获得明确书面授权进行测试的系统上使用。
未经授权访问计算机系统属于违法行为。作者对因使用本软件而产生的滥用、损害或任何法律后果不承担任何责任。
使用本工具即表示您同意自行承担全部责任,并将遵守所有适用的法律法规。
作者:Nxploited
Khaled Alenazi
Telegram:@Kxploit
◐ vuln |
| 文件已写入磁盘,但执行未被确认 |
○ skip | 目标不可达、已修补,或未发现上传表单 |
✗ miss | 上传尝试失败 |