
POC para CVE-2026-78006 The Events Calendar <= 6.17.4 - Inyección de objetos PHP no autenticada a ejecución remota de código
POC para CVE-2026-78006 The Events Calendar <= 6.17.4 - Inyección de Objetos PHP No Autenticada a Ejecución Remota de Código
#CONTACTO telegram para cualquier consulta : @soldout0O
Si aprecias mi trabajo, considera apoyar el proyecto vía USDT (TRC20): TQBA72kakjCZLnJt8fJYcD7dyQCEpzNtVN
The Events Calendar para WordPress contiene una vulnerabilidad de Inyección de Objetos PHP no autenticada que puede ser encadenada a Ejecución Remota de Código.
La ruta de código vulnerable involucra:
is_safe_widget_instance()enable_rendering_widget_copied()unserialize()do_blocks()Bajo las condiciones documentadas, un atacante no autenticado puede entregar markup de bloques manipulado a través de un comentario de evento y alcanzar la ruta de deserialización vulnerable antes de que ocurra la moderación del comentario.
La vulnerabilidad existe porque la protección del plugin alrededor de las instancias de widgets es insuficiente.
El flujo vulnerable puede resumirse como:```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 afectado
**Plugin:** The Events Calendar
**Vulnerabilidad:** Inyección de objetos PHP no autenticada que conduce a
Ejecución Remota de Código
**Versiones afectadas:** Todas las versiones hasta la **6.17.4** inclusive,
según el aviso de Wordfence.
> [!IMPORTANT]
> El PoC de investigación publicado actualmente con este repositorio se
> identifica internamente como dirigido a `<= 6.17.2`.
>
> El rango de versiones indicado anteriormente sigue el aviso de Wordfence
> (`<= 6.17.4`). Verifique siempre la versión exacta vulnerable/corregida contra
> el aviso del proveedor antes de probar un despliegue.
---
# Causa raíz
El comportamiento vulnerable está asociado con la interacción entre la
comprobación de seguridad del widget y el comportamiento de deserialización de objetos de PHP.
Las funciones clave involucradas son:```text
is_safe_widget_instance()
enable_rendering_widget_copied()
La comprobación de seguridad es insuficiente porque PHP puede invocar métodos mágicos durante su comportamiento de análisis/deserialización antes de que la validación de seguridad prevista proporcione una protección efectiva.
La cadena también depende de que el plugin genere un valor de integridad válido para la instancia de widget proporcionada.
Una de las características más importantes de esta vulnerabilidad es que el atacante no necesita una cuenta de WordPress existente.
La ruta de ataque abusa de la forma en que WordPress expone el comentario pendiente de un usuario a través de una URL con hash de moderación.
Las condiciones relevantes son:```text Comments enabled + Comments visible on events + Attacker can submit an event comment + V2 single-event template active
Después de enviar un comentario, WordPress puede proporcionar una URL de moderation-hash no autenticada que permite al comentarista ver su propio comentario pendiente.
Esto crea un mecanismo de entrega no autenticado para el marcado de bloque elaborado.
---
# Explicación técnica
## 1. Envío de comentario
El atacante envía un comentario asociado a un evento.
El comentario no necesita ser aprobado.
La propiedad importante es que WordPress puede exponer el comentario a través del mecanismo de moderation-hash.
---
## 2. Acceso mediante moderation-hash
WordPress proporciona al comentarista una URL que le permite ver su propio comentario pendiente.
Esto significa que el atacante puede alcanzar la ruta de renderizado vulnerable sin esperar a la moderación.
Conceptualmente:```text
POST Comment
|
v
Pending Comment
|
v
Moderation Hash
|
v
Unauthenticated Access
La plantilla de evento único V2 de Events Calendar procesa el contenido del evento y el HTML relacionado con los comentarios.
La ruta de procesamiento relevante de WordPress finalmente llega a:```text do_blocks()
Esto es importante porque el marcado de bloques incrustado en el contenido renderizado
se interpreta como datos de bloques de WordPress.
---
## 4. Datos de bloque manipulados
El PoC construye un bloque de widget heredado que contiene una instancia de widget
serializada.
La implementación de investigación construye el bloque utilizando una instancia
serializada codificada y un atributo de integridad.
La ruta vulnerable finalmente procesa estos datos como una instancia de widget.
---
## 5. Omisión de integridad
El comportamiento de `enable_rendering_widget_copied()` del plugin puede ser
abusado para producir un atributo de integridad válido para los datos del widget
controlados por el atacante.
Esto permite que la instancia de widget maliciosa pase la verificación de
integridad esperada y alcance la ruta de procesamiento vulnerable.
---
## 6. Manejo inseguro de objetos
La protección vulnerable `is_safe_widget_instance()` es insuficiente
contra el objeto suministrado a través de la instancia de widget manipulada.
El comportamiento de manejo de objetos de PHP puede invocar métodos mágicos durante
el proceso de deserialización.
El resultado es una primitiva de Inyección de Objetos PHP explotable.
---
## 7. Cadena de gadgets
El PoC de investigación construye estructuras de objetos de WordPress / The Events Calendar
que proporcionan comportamiento invocable durante la deserialización.
El PoC utiliza objetos orientados a callbacks y estructuras de clases serializadas
para construir el payload de investigación.
---
## 8. Ejecución de código
El impacto final es la Ejecución Remota de Código.
El PoC contiene una etapa de webshell de investigación y lógica de creación
de administrador.
Para la verificación segura de la vulnerabilidad, el límite de seguridad importante ya
está demostrado por la ejecución exitosa de la cadena de deserialización
vulnerable.
---
# Por qué la vulnerabilidad es crítica
La combinación de:```text
Unauthenticated
+
Remote
+
PHP Object Injection
+
RCE
crea una ruta de ataque de alto impacto.
Un atacante no necesita:
El principal requisito previo del entorno es que la ruta vulnerable de renderizado de eventos/comentarios sea accesible.
El repositorio contiene una implementación de investigación basada en Python.
El PoC subido es un ejecutor asíncrono en torno a la lógica de investigación original.
Utiliza:```text Python aiohttp rich
La implementación ejecuta la cadena de vulnerabilidades mediante la entrega y verificación de payloads por etapas.
La fuente del PoC describe su arquitectura de la siguiente manera:```text
payload building
|
v
stage 1
|
v
verification
|
v
stage 2
La implementación de investigación incluye funcionalidad para: