Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2026-78159 — Prueba de concepto de exploit para CVE-2026-78159, un RCE no autenticado en el plugin de WordPress The Events Calendar a través del sink de clases de widget parse_array. | Kitploit
Herramientas/GitHubGitHub/abraxas/cve-2026-78159
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebSeguridad WebPruebas de PenetraciónHerramienta de Acceso Remoto
GitHubabraxas/cve-2026-78159

CVE-2026-78159

Prueba de concepto de exploit para CVE-2026-78159, un RCE no autenticado en el plugin de WordPress The Events Calendar a través del sink de clases de widget parse_array.

Ver Repositorio
hace 7h 27mAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

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

El plugin The Events Calendar para WordPress es vulnerable a ejecución remota de código en todas las versiones hasta la 6.17.3, inclusive, a través de la función parse_array. Esto se debe a una validación insuficiente del mapa 'classes' del widget, lo que permite que una carga útil de array simple eluda la comprobación de objetos is_safe_widget_instance() y alcance el sink de invocación de callables en Element_Classes::parse_array(). Esto hace posible que atacantes no autenticados ejecuten código en el servidor. La explotación requiere que el sitio objetivo tenga los comentarios habilitados en las entradas tribe_events y que se haya enviado al menos un comentario que contenga un bloque wp:legacy-widget manipulado, ya que la cadena de ataque se desencadena cuando do_blocks() procesa el HTML del evento individual, incluida el área de comentarios.

CVECVE-2026-78159 · CVE.org
CWECWE-94
CVSSCrítico: 9.8 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
ProductoThe Events Calendar
Afectadastodas las versiones hasta la 6.17.3 (inclusive)
Parcheado6.17.3.1 y posteriores
Authninguna (ver mapa de origen)
LicenciaGNU Affero GPL v3.0
Labsolo 127.0.0.1 · paquete de divulgación para el proveedor/cliente, no un escáner

Aviso (del mapa de origen)

parse_array es el sink, no una acción ajax=. HTTP es POST /wp-comments-post.php y luego GET a la URL de vista previa de moderación. El idBase del widget es tribe-widget-events-list, no events-list.


Entrada

  • Método: POST
  • Ruta: /wp-comments-post.php
  • Enrutador: wp-comments-post.php sin autenticación. TEC V2 single-event almacena en búfer comments_template() y luego do_blocks(). render_block_data rehashea las instancias tribe-widget-*. the_widget('tribe-widget-events-list') con featured_events_only true vacía la lista, por lo que components/messages.php ejecuta tec_classes($classes). Element_Classes::parse_array invoca valores de tipo string-callable. Canario del lab poc_witness_78159, no system() ni wp_update_user.
  • Notas: CVE-2026-78159 CWE-94: The Events Calendar 6.17.3. idBase DEBE ser tribe-widget-events-list (PREFIJO tribe-widget- + slug events-list). Un hash ficticio sirve. El primer GET /event/lab-event/ es solo recolección. ÉXITO solo si POCWitness78159 aparece tras la redirección del comentario.

Cadena de llamadas

  • GET /event/lab-event/ recolecta 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 incluye unapproved=COMMENT_ID&moderation-hash=wp_hash(comment_date_gmt)
  • GET a esa Location: comments_template incluye el comentario no aprobado
  • 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 rechaza solo objetos, wp_hash del array simple
  • render_block_core_legacy_widget the_widget tribe-widget-events-list
  • Widget_List setup_arguments array_merge instance (classes sobrevive; setup_template_vars no lo sobrescribe)
  • lista destacada vacía -> widget-events-list.php rama else components/messages.php
  • tec_classes($classes) -> Element_Classes::parse_array clave string + valor is_callable -> poc_witness_78159($results) imprime POCWitness78159

Precondiciones del lab

  • The Events Calendar 6.17.3 activo
  • tema clásico (Twenty Twenty-One). Los temas de bloques omiten Template_Bootstrap::filter_template_include mediante tec_is_full_site_editor(), por lo que do_blocks nunca ve el HTML del comentario
  • tribe_events_calendar_options showComments=yes para que tribe_events admita comentarios
  • entrada tribe_events publicada lab-event con comment_status=open
  • comment_registration=0, primeros comentarios retenidos (unapproved + moderation-hash)
  • función mu-plugin poc_witness_78159 imprime POCWitness78159 (canario del lab, no una cadena de gadgets)
  • vistas/widgets V2 habilitados (siempre true en 6.17.3)

Testigo

El cuerpo HTTP del GET de vista previa de moderación contiene POCWitness78159. El HTML de evento genérico sin esa cadena no lo es. debug.log también puede añadir POCWitness78159.

No es éxito

  • HTML de evento 200 genérico sin POCWitness78159
  • wp-comments-post.php 200/302 sin seguir la Location
  • comentario 409/duplicado sin el bloque
  • 403/404 sin el testigo
  • reverse shell o conexión saliente
  • carga útil de restablecimiento de contraseña con system()/exec()/wp_update_user

Parche / remediación

Haz esto primero: Actualiza The Events Calendar a 6.17.3.1 o posterior (Wordfence recomienda 6.17.4.1 para cubrir también CVE-2026-78006).

Verificar tras la actualización

  • Vuelve a ejecutar CVE-2026-78159-Abraxas-Labs.py contra la compilación parcheada: el testigo mapeado no debe aparecer.
  • Confirma el aviso del proveedor / changeset en el árbol desplegado (ver referencias).
  • Una firma de WAF es un retraso, no un parche.

Si no puedes actualizar de inmediato

  • Deshabilita o aísla el componente afectado.
  • Busca la condición del testigo en producción (nuevos usuarios privilegiados, archivos inesperados, filas inyectadas — lo que nombre el mapa de este CVE).

Reproducción (lab autorizado)

Apunta solo a http://127.0.0.1:8088 (o al loopback que hayas enlazado). No apuntes este script a internet.

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

El éxito es el testigo anterior en el cuerpo de la respuesta. Un HTML 200 genérico no lo es.


Imágenes del lab

Pila de loopback usada para reproducir. Imágenes oficiales a menos que un Dockerfile en esta carpeta compile desde el código fuente.

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

Enlaza el árbol del producto vulnerable junto a Compose si el YAML monta un directorio local (zip del plugin / etiqueta de código fuente de la tabla de versiones). No publiques nada excepto 127.0.0.1.


Referencias

  • 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

  • Directorio de plugins: the-events-calendar

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

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

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


Registros (estructurados)

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.

Licencia

Este paquete de divulgación está licenciado bajo la GNU Affero General Public License v3.0. Ver LICENSE.


Descargo de responsabilidad

Este paquete es para el proveedor, el propietario del sitio y los labs autorizados. El script se comunica con 127.0.0.1. Usarlo contra sistemas que no posees no está autorizado por Abraxas Labs. Sin garantía.

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

Descargar herramienta