
POC per CVE-2026-78006 The Events Calendar <= 6.17.4 - Iniezione di Oggetti PHP non Autenticata con Esecuzione di Codice Remoto
POC per CVE-2026-78006 The Events Calendar <= 6.17.4 - Iniezione di Oggetti PHP non Autenticata con Esecuzione di Codice Remoto
#CONTACT telegram per qualsiasi richiesta : @soldout0O
Se apprezzi il mio lavoro, considera di supportare il progetto tramite USDT (TRC20): TQBA72kakjCZLnJt8fJYcD7dyQCEpzNtVN
The Events Calendar per WordPress contiene una vulnerabilità di Iniezione di Oggetti PHP non autenticata che può essere concatenata con l'Esecuzione di Codice Remoto.
Il percorso di codice vulnerabile coinvolge:
is_safe_widget_instance()enable_rendering_widget_copied()unserialize()do_blocks()Nelle condizioni documentate, un attaccante non autenticato può inviare markup di blocco appositamente costruito attraverso un commento a un evento e raggiungere il percorso di deserializzazione vulnerabile prima che avvenga la moderazione del commento.
La vulnerabilità esiste perché la protezione del plugin attorno alle istanze dei widget è insufficiente.
Il flusso vulnerabile può essere riassunto come:```text Unauthenticated Comment | v Pending Event Comment | v WordPress Moderation-Hash URL | v Unauthenticated Author Can View Own Pending Comment | v V2 Single-Event Template | v do_blocks() | v Injected Block Markup | v enable_rendering_widget_copied() | v Forged Integrity Attribute | v is_safe_widget_instance() | v PHP Magic Methods / Object Deserialization | v unserialize() | v PHP Object Injection | v Remote Code Execution
---
# Plugin interessato
**Plugin:** The Events Calendar
**Vulnerabilità:** PHP Object Injection non autenticato che porta a
Remote Code Execution
**Versioni interessate:** Tutte le versioni fino alla **6.17.4** inclusa,
secondo l'avviso di Wordfence.
> [!IMPORTANT]
> Il PoC di ricerca attualmente pubblicato con questo repository si
> identifica internamente come mirato a `<= 6.17.2`.
>
> L'intervallo di versioni indicato sopra segue l'avviso di Wordfence
> (`<= 6.17.4`). Verificare sempre la versione esatta vulnerabile/corretta
> rispetto all'avviso del fornitore prima di testare un deployment.
---
# Causa principale
Il comportamento vulnerabile è associato all'interazione tra il
controllo di sicurezza del widget e il comportamento di deserializzazione
degli oggetti di PHP.
Le funzioni chiave coinvolte sono:```text
is_safe_widget_instance()
enable_rendering_widget_copied()
Il controllo di sicurezza è insufficiente perché PHP può invocare metodi magici durante il suo comportamento di parsing/deserializzazione prima che la prevista validazione di sicurezza fornisca una protezione efficace.
La catena si basa anche sul fatto che il plugin generi un valore di integrità valido per l'istanza del widget fornita.
Una delle caratteristiche più importanti di questa vulnerabilità è che l'attaccante non necessita di un account WordPress esistente.
Il percorso di attacco sfrutta il modo in cui WordPress espone il commento in attesa dell'utente stesso tramite un URL con hash di moderazione.
Le condizioni rilevanti sono:```text Comments enabled + Comments visible on events + Attacker can submit an event comment + V2 single-event template active
Dopo aver inviato un commento, WordPress può fornire un URL moderation-hash non autenticato che consente a chi commenta di visualizzare il proprio commento in attesa di moderazione.
Questo crea un meccanismo di distribuzione non autenticato per il markup del blocco creato.
---
# Spiegazione tecnica
## 1. Invio del commento
L'attaccante invia un commento associato a un evento.
Il commento non deve essere approvato.
La proprietà importante è che WordPress può esporre il commento attraverso il meccanismo moderation-hash.
---
## 2. Accesso tramite moderation-hash
WordPress fornisce a chi commenta un URL che gli consente di visualizzare il proprio commento in attesa di moderazione.
Ciò significa che l'attaccante può raggiungere il percorso di rendering vulnerabile senza attendere la moderazione.
Concettualmente:```text
POST Comment
|
v
Pending Comment
|
v
Moderation Hash
|
v
Unauthenticated Access
Il template V2 per singolo evento di The Events Calendar elabora il contenuto dell'evento e l'HTML relativo ai commenti.
Il percorso di elaborazione WordPress rilevante raggiunge infine:```text do_blocks()
Questo è importante perché il markup a blocchi incorporato nel contenuto renderizzato
viene interpretato come dati di blocco WordPress.
---
## 4. Dati di blocco craftati
Il PoC costruisce un blocco legacy-widget contenente un'istanza di widget
serializzata.
L'implementazione di ricerca costruisce il blocco utilizzando un'istanza
serializzata codificata e un attributo di integrità.
Il percorso vulnerabile elabora infine questi dati come istanza di widget.
---
## 5. Bypass dell'integrità
Il comportamento `enable_rendering_widget_copied()` del plugin può essere abusato
per produrre un attributo di integrità valido per i dati del widget controllati
dall'attaccante.
Ciò consente all'istanza di widget malevola di superare il controllo di
integrità previsto e raggiungere il percorso di elaborazione vulnerabile.
---
## 6. Gestione non sicura degli oggetti
La protezione vulnerabile `is_safe_widget_instance()` è insufficiente
contro l'oggetto fornito tramite l'istanza di widget craftata.
Il comportamento di gestione degli oggetti di PHP può invocare metodi magici durante
il processo di deserializzazione.
Il risultato è una primitiva di PHP Object Injection sfruttabile.
---
## 7. Gadget Chain
Il PoC di ricerca costruisce strutture di oggetti WordPress / The Events Calendar
che forniscono comportamento richiamabile durante la deserializzazione.
Il PoC utilizza oggetti orientati ai callback e strutture di classi serializzate
per costruire il payload di ricerca.
---
## 8. Esecuzione di codice
L'impatto finale è l'esecuzione di codice in remoto.
Il PoC contiene uno stadio di webshell di ricerca e una logica di
creazione di amministratore.
Per una verifica sicura della vulnerabilità, il confine di sicurezza importante è
già dimostrato dall'esecuzione riuscita della catena di
deserializzazione vulnerabile.
---
# Perché la vulnerabilità è critica
La combinazione di:```text
Unauthenticated
+
Remote
+
PHP Object Injection
+
RCE
crea un percorso di attacco ad alto impatto.
Un attaccante non ha bisogno di:
Il principale prerequisito ambientale è che il percorso vulnerabile di rendering di eventi/commenti sia raggiungibile.
Il repository contiene un'implementazione di ricerca basata su Python.
La PoC caricata è un runner asincrono attorno alla logica di ricerca originale.
Utilizza:```text Python aiohttp rich
L'implementazione esegue la catena di vulnerabilità attraverso una
consegna e verifica del payload per fasi.
Il sorgente del PoC descrive la propria architettura come:```text
payload building
|
v
stage 1
|
v
verification
|
v
stage 2
L'implementazione di ricerca include funzionalità per: