POC pour CVE-2026-78006 The Events Calendar <= 6.17.4 - Injection d'objet PHP non authentifiée menant à l'exécution de code à distance
POC pour CVE-2026-78006 The Events Calendar <= 6.17.4 - Injection d'objet PHP non authentifiée menant à l'exécution de code à distance
#CONTACT telegram pour toute demande : @soldout0O
Si vous appréciez mon travail, envisagez de soutenir le projet via USDT (TRC20) : TQBA72kakjCZLnJt8fJYcD7dyQCEpzNtVN
The Events Calendar pour WordPress contient une vulnérabilité d'injection d'objet PHP non authentifiée qui peut être chaînée à une exécution de code à distance.
Le chemin de code vulnérable implique :
is_safe_widget_instance()enable_rendering_widget_copied()unserialize()do_blocks()Dans les conditions documentées, un attaquant non authentifié peut transmettre un balisage de bloc spécialement conçu via un commentaire d'événement et atteindre le chemin de désérialisation vulnérable avant que la modération des commentaires ne se produise.
La vulnérabilité existe parce que la protection du plugin autour des instances de widget est insuffisante.
Le flux vulnérable peut être résumé comme suit :```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
---
# Extension affectée
**Extension :** The Events Calendar
**Vulnérabilité :** Injection d'objet PHP non authentifiée menant à
l'exécution de code à distance
**Versions affectées :** Toutes les versions jusqu'à **6.17.4** inclus,
selon l'avis Wordfence.
> [!IMPORTANT]
> Le PoC de recherche actuellement publié avec ce dépôt s'identifie
> en interne comme ciblant `<= 6.17.2`.
>
> La plage de versions indiquée ci-dessus suit l'avis Wordfence
> (`<= 6.17.4`). Vérifiez toujours la version exacte vulnérable/corrigée par
> rapport à l'avis du fournisseur avant de tester un déploiement.
---
# Cause racine
Le comportement vulnérable est associé à l'interaction entre la
vérification de sécurité du widget et le comportement de désérialisation
d'objet de PHP.
Les fonctions clés impliquées sont :```text
is_safe_widget_instance()
enable_rendering_widget_copied()
Le contrôle de sécurité est insuffisant car PHP peut invoquer des méthodes magiques lors de son comportement d'analyse/désérialisation avant que la validation de sécurité prévue n'apporte une protection efficace.
La chaîne repose également sur le fait que le plugin génère une valeur d'intégrité valide pour l'instance de widget fournie.
L'une des caractéristiques les plus importantes de cette vulnérabilité est que l'attaquant n'a pas besoin d'un compte WordPress existant.
Le chemin d'attaque exploite la manière dont WordPress expose le commentaire en attente d'un utilisateur via une URL de hachage de modération.
Les conditions pertinentes sont :```text Comments enabled + Comments visible on events + Attacker can submit an event comment + V2 single-event template active
Après avoir soumis un commentaire, WordPress peut fournir une URL
moderation-hash non authentifiée qui permet au commentateur de consulter son
propre commentaire en attente.
Cela crée un mécanisme de livraison non authentifié pour le balisage de bloc
fabriqué.
---
# Explication technique
## 1. Soumission du commentaire
L'attaquant soumet un commentaire associé à un événement.
Le commentaire n'a pas besoin d'être approuvé.
La propriété importante est que WordPress peut exposer le commentaire via
le mécanisme moderation-hash.
---
## 2. Accès par moderation-hash
WordPress fournit au commentateur une URL qui lui permet de
consulter son propre commentaire en attente.
Cela signifie que l'attaquant peut atteindre le chemin de rendu vulnérable sans
attendre la modération.
Conceptuellement :```text
POST Comment
|
v
Pending Comment
|
v
Moderation Hash
|
v
Unauthenticated Access
Le modèle d'événement unique V2 de The Events Calendar traite le contenu de l'événement et le HTML lié aux commentaires.
Le chemin de traitement WordPress pertinent atteint finalement :```text do_blocks()
C'est important car le balisage de bloc intégré dans le contenu rendu
est interprété comme des données de bloc WordPress.
---
## 4. Données de bloc forgées
Le PoC construit un bloc de widget hérité contenant une instance de widget
sérialisée.
L'implémentation de recherche construit le bloc en utilisant une instance
sérialisée encodée et un attribut d'intégrité.
Le chemin vulnérable traite finalement ces données comme une instance de widget.
---
## 5. Contournement de l'intégrité
Le comportement `enable_rendering_widget_copied()` du plugin peut être abusé
pour produire un attribut d'intégrité valide pour les données de widget
contrôlées par l'attaquant.
Cela permet à l'instance de widget malveillante de passer la vérification
d'intégrité attendue et d'atteindre le chemin de traitement vulnérable.
---
## 6. Gestion non sécurisée des objets
La protection vulnérable `is_safe_widget_instance()` est insuffisante
contre l'objet fourni via l'instance de widget forgée.
Le comportement de gestion des objets de PHP peut invoquer des méthodes
magiques pendant le processus de désérialisation.
Le résultat est une primitive d'injection d'objet PHP exploitable.
---
## 7. Chaîne de gadgets
Le PoC de recherche construit des structures d'objets WordPress / The Events Calendar
qui fournissent un comportement appelable pendant la désérialisation.
Le PoC utilise des objets orientés callback et des structures de classes sérialisées
pour construire la charge utile de recherche.
---
## 8. Exécution de code
L'impact final est l'exécution de code à distance.
Le PoC contient une étape de webshell de recherche et une logique de création
d'administrateur.
Pour une vérification sécurisée de la vulnérabilité, la frontière de sécurité
importante est déjà démontrée par l'exécution réussie de la chaîne de
désérialisation vulnérable.
---
# Pourquoi la vulnérabilité est critique
La combinaison de :```text
Unauthenticated
+
Remote
+
PHP Object Injection
+
RCE
crée un chemin d'attaque à fort impact.
Un attaquant n'a pas besoin de :
Le principal prérequis environnemental est que le chemin de rendu vulnérable des événements/commentaires soit accessible.
Le dépôt contient une implémentation de recherche en Python.
Le PoC téléversé est un exécuteur asynchrone autour de la logique de recherche originale.
Il utilise :```text Python aiohttp rich
L'implémentation exécute la chaîne de vulnérabilités via une livraison et une vérification de charge utile par étapes.
La source du PoC décrit son architecture comme suit :```text
payload building
|
v
stage 1
|
v
verification
|
v
stage 2
L'implémentation de recherche inclut des fonctionnalités pour :