Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
Strumenti/GitHubGitHub/hassham1/cve-2026-89274-wp-recipe-maker-poc
Scanner di VulnerabilitàAnalisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebVirtualizzazione per la SicurezzaSicurezza WebPenetration TestingLab e Pratica
GitHubhassham1/cve-2026-89274-wp-recipe-maker-poc

CVE-2026-89274-wp-recipe-maker-poc

Laboratorio di validazione Docker e PoC Python per CVE-2026-89274, che dimostra l'esecuzione arbitraria di shortcode in WP Recipe Maker <= 10.8.1 tramite rating-comment reviewBody.

Vedi Repository
1 giorno faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CVE-2026-89274 - Laboratorio di validazione dell'esecuzione arbitraria di shortcode in WP Recipe Maker

Materiale di ricerca sulla sicurezza per riprodurre e validare CVE-2026-89274: WP Recipe Maker <= 10.8.1 esegue shortcode WordPress arbitrari registrati all'interno dei metadati JSON-LD della ricetta, inseriti tramite un commento di valutazione approvato.

  • Affetto: WP Recipe Maker <= 10.8.1
  • Corretto: 10.8.2 (do_shortcode sostituito con un do_shortcode_safe di solo stripping)
  • CVSS 3.1: 9.1 (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N) - CWE-94
  • Autenticazione: nessuna, ma il commento di valutazione dell'attaccante deve superare la soglia di approvazione dei commenti del sito (auto-approvazione o azione del moderatore) prima che lo shortcode iniettato inizi a essere eseguito al caricamento della pagina

Utilizzare solo su sistemi di propria proprietà o per i quali si è esplicitamente autorizzati a eseguire test. Il PoC pubblica un commento di valutazione contenente uno shortcode marcatore registrato nel laboratorio. Non viene utilizzato alcuno shortcode distruttivo e nulla viene scritto su disco.

Verdetto

Stato: dimostrato nel laboratorio fornito.

WP Recipe Maker 10.8.1 (WordPress 7.1.2, modello di scheda ricetta predefinito):

root@kitploit:~
comment posted : "[cve89274]" + wprm-comment-rating=5 on the recipe's parent post
result         : JSON-LD on the rendered page contains
                 "reviewBody":"CVE89274-SHORTCODE-FIRED"
                 (marker shortcode executed server-side at render time)
10.8.2         : shortcode stripped, marker absent (patched negative control)

Ciò dimostra l'esecuzione lato server di uno shortcode arbitrario registrato con output incorporato nei metadati della pagina, divulgato a ogni visitatore. Non dimostra RCE; l'impatto dipende da quali shortcode sono registrati sul target (esposizione di post/meta, shortcode forniti da plugin con effetti collaterali).

Causa principale (verificata rispetto alla correzione 10.8.2)

WPRM_Metadata::sanitize_metadata() sanifica ricorsivamente ogni campo scalare dell'array di metadati strutturati della ricetta:

root@kitploit:~
// includes/public/class-wprm-metadata.php:553, WP Recipe Maker 10.8.1
$sanitized = strip_shortcodes( wp_strip_all_tags( do_shortcode( $metadata ) ) );

// 10.8.2
$sanitized = strip_shortcodes( wp_strip_all_tags( WPRM_Instacart::do_shortcode_safe( $metadata ) ) );

do_shortcode() esegue prima lo shortcode; il wrapper strip_shortcodes() rimuove solo i tag dall'output già eseguito. Uno dei campi, reviewBody, viene popolato testualmente da comment_content dei commenti approvati che portano un valore meta wprm-comment-rating (class-wprm-metadata.php:1016), interrogato rispetto al post genitore della ricetta (post_id => $recipe->parent_post_id(), riga 973) - il post o la pagina in cui è incorporata la scheda della ricetta.

La sostituzione in 10.8.2, WPRM_Instacart::do_shortcode_safe() (class-wprm-instacart.php:501), mantiene solo il contenuto interno e non esegue nulla.

Flusso di sfruttamento (come validato)

  1. Prendere di mira il post genitore di una ricetta (il post/pagina che incorpora [wprm-recipe]).
  2. Inviare un commento a /wp-comments-post.php con lo shortcode nel corpo e wprm-comment-rating=5.
  3. Il commento supera la soglia di approvazione del sito (il laboratorio auto-approva; sui target reali: auto-approvazione o un moderatore).
  4. Al successivo e a ogni successivo rendering della pagina genitore, il costruttore dei metadati include il commento nell'array review del JSON-LD, e sanitize_metadata() esegue lo shortcode. Il suo output sostituisce il testo del commento all'interno di reviewBody, visibile a ogni visitatore.

Avvio rapido

Requisiti: Docker con Compose v2, Python 3.10+ sull'host.

root@kitploit:~
./lab verify

Costruisce il laboratorio 10.8.1, richiede che il marcatore scatti, poi costruisce il laboratorio 10.8.2 e ne richiede l'assenza. Rimuovere tutto con ./lab reset.

Evidenza attesa

Controllo vulnerabile:

root@kitploit:~
[!!!] SHORTCODE EXECUTION CONFIRMED
  evidence: 'CVE89274-SHORTCODE-FIRED' present in the rendered recipe page
  context : ..."reviewBody":"CVE89274-SHORTCODE-FIRED","author":...
RESULT: VULNERABLE CONTROL CONFIRMED

Controllo corretto:

root@kitploit:~
[=] shortcode text present but NOT executed: output was stripped
RESULT: PATCHED CONTROL CONFIRMED

Un marcatore nella pagina solo all'interno del commento visualizzato (testo grezzo) non è accettato come prova; il marcatore deve apparire come output eseguito nei metadati.

Ciclo di vita manuale del laboratorio

root@kitploit:~
./lab start vulnerable   # 10.8.1 lab on http://127.0.0.1:9482
./lab test               # assert marker fires
./lab start patched      # 10.8.2 lab
./lab test               # assert absence
./lab status
./lab reset

Eseguire il PoC manualmente (loopback predefinito; i target esterni autorizzati richiedono l'override esplicito):

root@kitploit:~
python3 poc/poc_cve_2026_89274.py --url http://127.0.0.1:9482 --post-id 5
python3 poc/poc_cve_2026_89274.py --url https://target.example \
  --allow-authorized-non-loopback [--insecure]

Il template nuclei (nuclei/cve-2026-89274.yaml) è solo uno screening di versione (readme.txt stable tag <= 10.8.1). La catena comportamentale richiede l'invio del commento più una transizione di approvazione, cosa non pratica da esprimere in nuclei; il PoC Python esegue il flusso completo.

Versioni affette e testate

VersioneValutazione
WP Recipe Maker 10.8.1Esecuzione dello shortcode riprodotta end to end
WP Recipe Maker 10.8.2Controllo negativo corretto riprodotto
WP Recipe Maker <= 10.8.0Affetto secondo l'advisory; non testato individualmente

Struttura del repository

root@kitploit:~
.
├── .github/workflows/validate.yml
├── .gitignore
├── LICENSE
├── README.md
├── SECURITY.md
├── docker-compose.yml
├── lab
├── nuclei/
│   └── cve-2026-89274.yaml
└── poc/
    └── poc_cve_2026_89274.py

Non committato: assets/ (zip dei plugin), .lab-state, __pycache__/.

Limiti di validazione

AffermazioneStato
Esecuzione dello shortcode tramite reviewBody del commento di valutazioneDimostrato (10.8.1)
Output dell'esecuzione divulgato nel JSON-LD renderizzatoDimostrato
Controllo negativo corretto (10.8.2)Dimostrato
Configurazione predefinita (CPT ricetta privata + post genitore)Dimostrato (questa è la topologia del laboratorio)
Configurazione con tipo di post ricetta pubblicoNon testato
Endpoint REST di valutazione di WPRM come ingresso alternativoNon testato
Impatto oltre l'output dello shortcode registrato (RCE)Non affermato

Riferimenti

  • Wordfence: CVE-2026-89274
  • Voce NVD
  • Plugin WP Recipe Maker

Limite di sicurezza

Eseguire questo repository solo su sistemi di propria proprietà o per i quali si è esplicitamente autorizzati a eseguire test. Il driver del laboratorio rifiuta varianti diverse da vulnerable/patched, il PoC rifiuta target non loopback a meno che non venga fornito --allow-authorized-non-loopback, e la porta di Compose è vincolata a 127.0.0.1.

Vedere SECURITY.md per la gestione della divulgazione. Questo repository non include target di produzione, dati dei clienti, token di accesso o evidenze da sistemi reali.

Licenza

MIT - vedere LICENSE.

Scarica lo strumento