Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2026-78159 — Proof-of-concept d'exploit pour CVE-2026-78159, une RCE non authentifiée dans le plugin WordPress The Events Calendar via le sink des classes de widget parse_array. | Kitploit
Outils/GitHubGitHub/abraxas/cve-2026-78159
Analyse des VulnérabilitésExploitationExploitation d'Applications WebSécurité WebTests d'IntrusionOutil d'Accès à Distance
GitHubabraxas/cve-2026-78159

CVE-2026-78159

Proof-of-concept d'exploit pour CVE-2026-78159, une RCE non authentifiée dans le plugin WordPress The Events Calendar via le sink des classes de widget parse_array.

Voir le dépôt
il y a 7h 25mPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Abraxas Labs — CVE-2026-78159

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  CVE-2026-78159

CVE-2026-78159

The Events Calendar 6.17.3 — stellarwp

Le plugin The Events Calendar pour WordPress est vulnérable à une exécution de code à distance dans toutes les versions jusqu'à 6.17.3 incluse, via la fonction parse_array. Cela est dû à une validation insuffisante de la map 'classes' du widget, permettant à une charge utile de type tableau simple de contourner la vérification d'objet is_safe_widget_instance() et d'atteindre le point d'invocation appelable dans Element_Classes::parse_array(). Cela permet à des attaquants non authentifiés d'exécuter du code sur le serveur. L'exploitation nécessite que le site ciblé ait les commentaires activés sur les publications tribe_events et qu'au moins un commentaire contenant un bloc wp:legacy-widget forgé ait été soumis, car la chaîne d'attaque est déclenchée lorsque do_blocks() traite le HTML de l'événement unique, y compris la zone de commentaires.

CVECVE-2026-78159 · CVE.org
CWECWE-94
CVSSCritique : 9.8 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
ProduitThe Events Calendar
Affectétoutes les versions jusqu'à 6.17.3 (incluse)
Corrigé6.17.3.1 et ultérieures
Authaucune (voir la source map)
LicenceGNU Affero GPL v3.0
Lab127.0.0.1 uniquement · pack de divulgation fournisseur/client, pas un scanner

Avis (issu de la source map)

parse_array est le point d'aboutissement, pas une action ajax=. Le HTTP est POST /wp-comments-post.php puis GET de l'URL d'aperçu de modération. L'idBase du widget est tribe-widget-events-list, pas events-list.


Entrée

  • Méthode : POST
  • Chemin : /wp-comments-post.php
  • Routeur : wp-comments-post.php non authentifié. TEC V2 single-event met en tampon comments_template() puis do_blocks(). render_block_data rehache les instances tribe-widget-*. the_widget('tribe-widget-events-list') avec featured_events_only true vide la liste, de sorte que components/messages.php exécute tec_classes($classes). Element_Classes::parse_array invoque les valeurs appelables de type chaîne. Canari de lab poc_witness_78159, pas system() et pas wp_update_user.
  • Notes : CVE-2026-78159 CWE-94 : The Events Calendar 6.17.3. L'idBase DOIT être tribe-widget-events-list (PRÉFIXE tribe-widget- + slug events-list). Un hash factice suffit. Le premier GET /event/lab-event/ ne sert qu'à la collecte. SUCCÈS uniquement si POCWitness78159 apparaît après la redirection du commentaire.

Chaîne d'appels

  • GET /event/lab-event/ collecte comment_post_ID
  • POST /wp-comments-post.php comment=<!-- wp:legacy-widget {idBase tribe-widget-events-list, instance.encoded php-serialize-base64, instance.hash 0} /-->
  • 302 Location inclut unapproved=COMMENT_ID&moderation-hash=wp_hash(comment_date_gmt)
  • GET cette Location : comments_template inclut le commentaire non approuvé
  • Template_Bootstrap::get_v1_single_event_template_html do_blocks($html)
  • Service_Provider::enable_rendering_widget_copied (render_block_data) unserialize allowed_classes false, is_safe_widget_instance rejette uniquement les objets, wp_hash le tableau simple
  • render_block_core_legacy_widget the_widget tribe-widget-events-list
  • Widget_List setup_arguments array_merge instance (classes survit ; setup_template_vars ne l'écrase pas)
  • liste featured vide -> widget-events-list.php branche else components/messages.php
  • tec_classes($classes) -> Element_Classes::parse_array clé chaîne + valeur is_callable -> poc_witness_78159($results) affiche POCWitness78159

Préconditions du lab

  • The Events Calendar 6.17.3 actif
  • thème classique (Twenty Twenty-One). Les thèmes à blocs contournent Template_Bootstrap::filter_template_include via tec_is_full_site_editor(), donc do_blocks ne voit jamais le HTML des commentaires
  • tribe_events_calendar_options showComments=yes pour que tribe_events prenne en charge les commentaires
  • publication tribe_events publiée lab-event avec comment_status=open
  • comment_registration=0, premiers commentaires retenus (unapproved + moderation-hash)
  • fonction mu-plugin poc_witness_78159 affiche POCWitness78159 (canari de lab, pas une chaîne de gadgets)
  • vues/widgets V2 activés (toujours vrai en 6.17.3)

Témoin

Le corps HTTP du GET d'aperçu de modération contient POCWitness78159. Un HTML d'événement générique sans cette chaîne n'est pas le bon. debug.log peut également ajouter POCWitness78159.

Pas un succès

  • HTML d'événement 200 générique sans POCWitness78159
  • wp-comments-post.php 200/302 sans suivre la Location
  • commentaire 409/doublon sans le bloc
  • 403/404 sans le témoin
  • reverse shell ou connexion sortante
  • charge utile system()/exec()/wp_update_user de réinitialisation de mot de passe

Correctif / remédiation

À faire en premier : Mettez à jour The Events Calendar vers 6.17.3.1 ou une version ultérieure (Wordfence recommande 6.17.4.1 pour couvrir également CVE-2026-78006).

Vérifier après la mise à niveau

  • Relancez CVE-2026-78159-Abraxas-Labs.py contre la version corrigée : le témoin mappé ne doit pas apparaître.
  • Confirmez l'avis du fournisseur / le changeset dans l'arborescence déployée (voir les références).
  • Une signature WAF est un délai, pas un correctif.

Si vous ne pouvez pas mettre à jour immédiatement

  • Désactivez ou isolez le composant affecté.
  • Recherchez la condition témoin en production (nouveaux utilisateurs privilégiés, fichiers inattendus, lignes injectées — tout ce que la map de ce CVE nomme).

Reproduction (lab autorisé)

Ciblez uniquement http://127.0.0.1:8088 (ou le loopback que vous avez lié). Ne pointez pas ce script vers Internet.

root@kitploit:~
python3 CVE-2026-78159-Abraxas-Labs.py

Le succès est le témoin ci-dessus dans le corps de la réponse. Un HTML 200 générique n'est pas le bon.


Images du lab

Pile loopback utilisée pour la reproduction. Images officielles sauf si un Dockerfile dans ce dossier construit depuis les sources.

  • lab/docker-compose.yml
  • lab/docker-compose.override.yml
  • lab/Dockerfile
root@kitploit:~
cd lab
docker compose up --force-recreate

Liez l'arborescence du produit vulnérable à côté de Compose si le YAML monte un répertoire local (zip du plugin / tag source issu du tableau des versions). Ne publiez rien d'autre que 127.0.0.1.


Références

  • CVE-2026-78159 · NVD

  • CVE-2026-78159 · CVE.org

  • plugins.trac.wordpress.org/browser/the-events-calendar/tags/6.17.3/common/src/Tribe/Utils/Element_Classes.php#L211

  • plugins.trac.wordpress.org/browser/the-events-calendar/tags/6.17.3/src/Tribe/Views/V2/Template_Bootstrap.php#L214

  • plugins.trac.wordpress.org/browser/the-events-calendar/tags/6.17.3/src/Tribe/Views/V2/Widgets/Service_Provider.php#L279

  • plugins.trac.wordpress.org/browser/the-events-calendar/tags/6.17.3/src/views/v2/components/messages.php#L30

  • plugins.trac.wordpress.org/changeset?reponame=&old=3667866%40the-events-calendar&new=3667866%40the-events-calendar

  • plugins.trac.wordpress.org/changeset?reponame=&old=3667867%40the-events-calendar&new=3667867%40the-events-calendar

  • www.wordfence.com/threat-intel/vulnerabilities/id/cc2ccfeb-6df6-4fee-96a5-94f8dd131f7c?source=cve

  • github.com/advisories/GHSA-9c57-9fxg-8x9j

  • nvd.nist.gov/vuln/detail/CVE-2026-78159

  • Répertoire de plugins : the-events-calendar

  • Navigateur Trac : plugins.trac.wordpress.org/the-events-calendar

  • Tags SVN : plugins.svn.wordpress.org/the-events-calendar

  • Abraxas Labs : abraxaslabs.tech · github.com/abraxas · @abraxas_null


Enregistrements (structurés)

root@kitploit:~
# CVE-2026-78159  (structured records)

- input: `https://nvd.nist.gov/vuln/detail/CVE-2026-78159`
- CWE: CWE-94
- published: 2026-09-12T08:16:24.377

## NVD description

The The Events Calendar plugin for WordPress is vulnerable to Remote Code Execution in all versions up to, and including, 6.17.3 via the parse_array function. This is due to insufficient validation of the widget 'classes' map, allowing a plain-array payload to bypass the is_safe_widget_instance() object check and reach the callable-invocation sink in Element_Classes::parse_array(). This makes it possible for unauthenticated attackers to execute code on the server. Exploitation requires that the targeted site has comments enabled on tribe_events posts and that at least one comment containing a crafted wp:legacy-widget block has been submitted, as the attack chain is triggered when do_blocks() processes the single-event HTML including the comment area.

## MITRE description

The The Events Calendar plugin for WordPress is vulnerable to Remote Code Execution in all versions up to, and including, 6.17.3 via the parse_array function. This is due to insufficient validation of the widget 'classes' map, allowing a plain-array payload to bypass the is_safe_widget_instance() object check and reach the callable-invocation sink in Element_Classes::parse_array(). This makes it possible for unauthenticated attackers to execute code on the server. Exploitation requires that the targeted site has comments enabled on tribe_events posts and that at least one comment containing a crafted wp:legacy-widget block has been submitted, as the attack chain is triggered when do_blocks() processes the single-event HTML including the comment area.

## Affected

- stellarwp The Events Calendar 0 affected

## References (JSON sources only)

- https://plugins.trac.wordpress.org/browser/the-events-calendar/tags/6.17.3/common/src/Tribe/Utils/Element_Classes.php#L211
- https://plugins.trac.wordpress.org/browser/the-events-calendar/tags/6.17.3/src/Tribe/Views/V2/Template_Bootstrap.php#L214
- https://plugins.trac.wordpress.org/browser/the-events-calendar/tags/6.17.3/src/Tribe/Views/V2/Widgets/Service_Provider.php#L279
- https://plugins.trac.wordpress.org/browser/the-events-calendar/tags/6.17.3/src/views/v2/components/messages.php#L30
- https://plugins.trac.wordpress.org/changeset?reponame=&old=3667866%40the-events-calendar&new=3667866%40the-events-calendar
- https://plugins.trac.wordpress.org/changeset?reponame=&old=3667867%40the-events-calendar&new=3667867%40the-events-calendar
- https://www.wordfence.com/threat-intel/vulnerabilities/id/cc2ccfeb-6df6-4fee-96a5-94f8dd131f7c?source=cve
- https://github.com/advisories/GHSA-9c57-9fxg-8x9j
- https://nvd.nist.gov/vuln/detail/CVE-2026-78159

## GitHub advisory

The The Events Calendar plugin for WordPress is vulnerable to Remote Code Execution in all...

The The Events Calendar plugin for WordPress is vulnerable to Remote Code Execution in all versions up to, and including, 6.17.3 via the parse_array function. This is due to insufficient validation of the widget 'classes' map, allowing a plain-array payload to bypass the is_safe_widget_instance() object check and reach the callable-invocation sink in Element_Classes::parse_array(). This makes it possible for unauthenticated attackers to execute code on the server. Exploitation requires that the targeted site has comments enabled on tribe_events posts and that at least one comment containing a crafted wp:legacy-widget block has been submitted, as the attack chain is triggered when do_blocks() processes the single-event HTML including the comment area.

Licence

Ce pack de divulgation est sous licence GNU Affero General Public License v3.0. Voir LICENSE.


Avertissement

Ce pack est destiné au fournisseur, au propriétaire du site et aux labs sous licence. Le script communique avec 127.0.0.1. L'utiliser contre des systèmes que vous ne possédez pas n'est pas autorisé par Abraxas Labs. Aucune garantie.

abraxaslabs.tech · github.com/abraxas · @abraxas_null

Télécharger l’outil