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:
El PoC también contiene comprobaciones adaptadas a la plataforma para entornos Windows y tipo Unix.
La herramienta de investigación puede utilizarse contra una instalación de WordPress autorizada individual.
Conceptualmente:```text Single URL | v Target Discovery | v Event Discovery | v Comment Delivery | v Vulnerability Trigger | v Verification
Un flujo de trabajo de objetivo único es útil para:
* Laboratorios locales
* Sistemas de staging
* Reproducción de CVE
* Pruebas de proveedores
* Pruebas de penetración autorizadas
* Investigación de seguridad
---
# Lista de URL
El ejecutor asíncrono también admite una lista de URL.
El formato de entrada es:```text
one URL per line
Ejemplo:```text https://lab-wordpress-01.example https://lab-wordpress-02.example https://lab-wordpress-03.example
Las líneas en blanco y los comentarios pueden ignorarse.
El ejecutor carga los objetivos y los procesa de forma concurrente utilizando el
recuento de hilos/concurrencia configurado.
---
# Procesamiento concurrente
El PoC admite el procesamiento concurrente de múltiples objetivos.
Conceptualmente:```text
URL LIST
|
+-----------+-----------+
| | |
v v v
Worker 1 Worker 2 Worker 3
| | |
v v v
Target Target Target
| | |
+-----------+-----------+
|
v
Results
La implementación utiliza un semáforo asíncrono para controlar el nivel de concurrencia.
La concurrencia configurada por defecto en el runner es 20.
El runner asíncrono puede crear dos archivos de resultados:```text shells.txt admins.txt
`shells.txt` contiene las URL de shells subidas descubiertas.
`admins.txt` contiene la información del resultado del administrador en la forma:```text
url | user | pass
[!WARNING] Estos archivos pueden contener credenciales extremadamente sensibles y artefactos de post-explotación.
Nunca publiques los archivos de resultados generados en GitHub.
Para la investigación pública de vulnerabilidades, mantén estos archivos fuera del repositorio
de Git y añádelos a .gitignore.
.gitignore recomendado```gitignoreshells.txt admins.txt
For responsible vulnerability validation:
START
|
v
Verificar la versión del plugin
|
v
Verificar los requisitos previos
|
v
Confirmar que los comentarios están habilitados
|
v
Confirmar que los eventos exponen los comentarios
|
v
Reproducir en un laboratorio
|
v
Confirmar el comportamiento vulnerable
|
v
Registrar evidencia y registros
|
v
Detener / divulgar```
Use the minimum level of interaction required to prove the finding.
---
# Important Prerequisites
The Wordfence advisory identifies the following important condition:
```text
Los comentarios deben estar habilitados
y
los comentarios deben ser visibles en los eventos```
The attack relies on the ability of an unauthenticated commenter to view
their own pending comment through the WordPress moderation-hash URL.
If comments are disabled or the relevant event comment path is not
available, the documented unauthenticated delivery mechanism may not be
reachable.
---
# Platform Considerations
The PoC contains environment-detection functionality.
The research code attempts to identify information such as:
```text
Sistema operativo
Usuario de ejecución actual
Directorio de trabajo actual
Raíz del documento
Software del servidor
Host HTTP
Información de PHP```
These values are useful for controlled research and understanding the
impact of successful code execution.
---
# Payload Architecture
The serialized payload contains multiple nested PHP objects.
The research implementation builds structures associated with:
```text
Tribe__Utils__Callback
Tribe\Utils\Element_Classes
stdClass```
The serialized structures are then embedded into a WordPress legacy
widget block.
Conceptually:
```text
Grafo de Objetos PHP
|
v
Objeto Serializado
|
v
Codificación Base64
|
v
Bloque de Widget Heredado
|
v
WordPress do_blocks()
|
v
The Events Calendar
|
v
Deserialización de Objetos```
---
# Stage 1
The research PoC's first stage is designed to verify that the injected
object graph reaches the intended execution path.
The stage contains multiple controlled callbacks used to determine
whether code execution or environment disclosure occurred.
The implementation includes research checks such as:
```text
Directorio de trabajo actual
Usuario de ejecución
Raíz del documento
Información del servidor
Información de PHP```
---
# Stage 2
If the initial stage does not directly establish the required persistent
artifact location, the PoC contains a second-stage mechanism that
attempts alternative locations.
The research implementation specifically considers WordPress upload
locations and document-root-related paths.
---
# Administrator Stage
The PoC also contains administrator creation functionality.
The research implementation can construct a WordPress administrator
through the vulnerable execution path.
This demonstrates that successful exploitation can result in both:
```text
Ejecución Remota de Código
+
Acceso Persistente como Administrador de WordPress```
Administrator credentials generated during research should never be
committed to source control.
---
# Webshell Stage
The PoC contains a webshell stage intended for controlled research.
The webshell is packaged as a WordPress plugin ZIP and deployed through
an authenticated WordPress administrator session established by the
chain.
The research implementation uses a secret token to gate shell requests.
> [!CAUTION]
> The webshell is an exploitation artifact.
>
> Use it only in an isolated laboratory or during an explicitly
> authorized penetration test, and remove it immediately after testing.
---
# Verification
Successful vulnerability validation can be based on evidence such as:
```text
Versión del plugin
+
Evento alcanzable
+
Entrega de comentarios
+
Renderizado del hash de moderación
+
Procesamiento del widget vulnerable
+
Evidencia de ejecución controlada```
For responsible disclosure, collect only the minimum evidence required.
---
# Impact
Successful exploitation may allow an unauthenticated attacker to:
* Execute arbitrary PHP code
* Execute commands in the context of the web server
* Read sensitive application information
* Access environment information
* Modify WordPress files
* Create administrator accounts
* Install malicious plugins
* Establish persistence
* Potentially compromise the underlying server
The ultimate impact depends on the privileges of the PHP process and
the hosting environment.
---
# Detection
Defenders should monitor for unusual activity involving:
* Event comment submissions
* Pending comments followed by moderation-hash access
* Suspicious block markup
* Legacy widget blocks
* Unexpected widget instance data
* Unexpected serialized PHP objects
* PHP execution triggered during event rendering
* Unexpected plugin installations
* New administrator accounts
* Unexpected PHP files
* Suspicious files under `wp-content/uploads/`
A compromise investigation should correlate:
```text
Registros del servidor web
+
Registros de WordPress
+
Actividad de la base de datos
+
Integridad de archivos
+
Cuentas de administrador```
---
# Indicators of Compromise
Potential indicators include:
```text
Cuentas de administrador inesperadas
Directorios de plugins inesperados
Archivos PHP inesperados
Archivos sospechosos en wp-content/uploads/
Comentarios de eventos inesperados
Solicitudes anómalas de moderation-hash
Solicitudes inesperadas relacionadas con widgets
Ejecución de PHP inesperada```
Because individual indicators can have legitimate explanations, they
should be investigated in context.
---
# Mitigation
The primary mitigation is to update **The Events Calendar** to a fixed
version provided by the vendor.
Until the plugin is updated, defenders should consider:
* Disabling comments where operationally acceptable
* Restricting public event comments
* Monitoring event comment traffic
* Reviewing recently created administrator accounts
* Monitoring plugin installation activity
* Performing file-integrity checks
* Reviewing web-server logs
* Reviewing WordPress logs
If compromise is suspected, treat the system as potentially compromised
rather than merely vulnerable.
---
# Incident Response
If exploitation is suspected:
1. Preserve relevant logs.
2. Identify suspicious requests.
3. Review administrator accounts.
4. Review installed plugins.
5. Inspect recently modified PHP files.
6. Inspect `wp-content/uploads/`.
7. Rotate WordPress credentials.
8. Rotate hosting/server credentials where appropriate.
9. Remove unauthorized persistence.
10. Restore trusted application files when necessary.
11. Upgrade the vulnerable plugin.
12. Continue monitoring for re-entry.
---
# Responsible Disclosure
When reporting this vulnerability or derivative research:
* Clearly identify the affected plugin.
* Include the affected version.
* Include the fixed version when confirmed.
* Explain the unauthenticated attack path.
* Document the required prerequisites.
* Provide reproducible evidence in a controlled environment.
* Avoid publishing victim data.
* Never publish generated administrator credentials.
* Never publish live webshell URLs.
---
# Research Limitations
A vulnerable plugin version alone does not guarantee successful
exploitation.
The attack path can be affected by:
* WordPress configuration
* Comment settings
* Event visibility
* Template configuration
* Security plugins
* Web Application Firewalls
* Reverse proxies
* PHP configuration
* Hosting permissions
* Object caching
* Network filtering
Therefore, version fingerprinting should be treated as an initial
indicator rather than definitive proof of exploitability.
---
# Repository Safety
Do not commit:
```text
shells.txt
admins.txt
URLs de objetivos reales
credenciales generadas
archivos webshell
salida de phpinfo capturada
volcados de base de datos
información del entorno del servidor
datos de prueba privados```
Use synthetic laboratory targets when creating screenshots,
demonstrations, or documentation.
---
# Recommended Repository Structure
```text
the-events-calendar-poc/
│
├── poc.py
├── README.md
├── LICENSE
├── .gitignore
│
├── screenshots/
│ └── .gitkeep
│
└── docs/
└── research-notes.md```
Keep runtime artifacts outside the repository.
---
# Technical Summary
```text
The Events Calendar
|
v
Plantilla de evento único V2
|
v
WordPress do_blocks()
|
v
Bloque de widget heredado
|
v
Instancia de widget falsificada
|
v
Atributo de integridad válido
|
v
is_safe_widget_instance()
|
v
Deserialización de objetos PHP
|
v
Invocación de métodos mágicos
|
v
Inyección de objetos PHP
|
v
Ejecución remota de código```
---
# Severity
**Impact:** Remote Code Execution
**Authentication:** Not required
**Attack Vector:** Remote
**Primary Component:** The Events Calendar
**Primary Vulnerable Functions:**
```text
is_safe_widget_instance()
enable_rendering_widget_copied()```
**Delivery Mechanism:**
```text
Comentarios de eventos
+
URL de moderación-hash de WordPress
+
Renderizado de eventos V2```
---
# Key Takeaway
The important aspect of this vulnerability is not simply that the plugin
uses PHP serialization.
The complete unauthenticated attack path is enabled by the combination
of:
```text
Validación insuficiente de widgets
+
Comportamiento de métodos mágicos de PHP
+
Atributo de integridad falsificado
+
do_blocks()
+
Comentarios de eventos públicos
+
Acceso a moderation-hash```
This combination creates an unauthenticated path to PHP Object Injection
and Remote Code Execution.
---
# Credits
Vulnerability details and affected-version information:
**Wordfence Threat Intelligence**
Research PoC:
**The Events Calendar PHP Object Injection / RCE research implementation**
---
# References
* Wordfence Threat Intelligence — The Events Calendar PHP Object
Injection / RCE vulnerability
* The Events Calendar
* WordPress Core
* WordPress Comments
* WordPress Block Editor
* WordPress `do_blocks()`
* PHP Object Serialization / Deserialization
---
# Disclaimer
This repository contains security research concerning a remote-code-
execution vulnerability affecting a WordPress plugin.
The PoC is provided for:
* Security research
* Defensive validation
* Authorized penetration testing
* Controlled laboratory reproduction
* Education
Only test systems that you own or have explicit written authorization
to assess.
The authors are not responsible for unauthorized use of this research.
---
# Keywords
```text
CVE-2026-78006
The Events Calendar
The Events Calendar WordPress
Vulnerabilidad de The Events Calendar
RCE de The Events Calendar
Inyección de objetos PHP de The Events Calendar
WordPress
POC de CVE-2026-78006
Seguridad de WordPress
Vulnerabilidad de WordPress
RCE de WordPress
Inyección de objetos PHP
Deserialización PHP
RCE no autenticado
Ejecución remota de código
CVE
Seguridad de plugins de WordPress
RCE de plugins de WordPress
is_safe_widget_instance
enable_rendering_widget_copied
do_blocks
comentarios de WordPress
hash de moderación
legacy-widget
investigación de seguridad
PoC
Prueba de concepto
pruebas de penetración```