
POC para CVE-2026-78006 The Events Calendar <= 6.17.4 - Injeção de Objeto PHP Não Autenticada para Execução Remota de Código
POC para CVE-2026-78006 The Events Calendar <= 6.17.4 - Injeção de Objeto PHP Não Autenticada para Execução Remota de Código
#CONTATO telegram para qualquer dúvida : @soldout0O
Se você aprecia meu trabalho, considere apoiar o projeto via USDT (TRC20): TQBA72kakjCZLnJt8fJYcD7dyQCEpzNtVN
The Events Calendar para WordPress contém uma vulnerabilidade de Injeção de Objeto PHP não autenticada que pode ser encadeada para Execução Remota de Código.
O caminho de código vulnerável envolve:
is_safe_widget_instance()enable_rendering_widget_copied()unserialize()do_blocks()Sob as condições documentadas, um atacante não autenticado pode entregar markup de bloco elaborado através de um comentário de evento e alcançar o caminho de desserialização vulnerável antes que a moderação de comentários ocorra.
A vulnerabilidade existe porque a proteção do plugin em torno de instâncias de widget é insuficiente.
O fluxo vulnerável pode ser resumido 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 Afetado
**Plugin:** The Events Calendar
**Vulnerabilidade:** Injeção de Objeto PHP Não Autenticada levando a
Execução Remota de Código
**Versões afetadas:** Todas as versões até e incluindo **6.17.4**,
de acordo com o aviso da Wordfence.
> [!IMPORTANT]
> O PoC de pesquisa atualmente publicado com este repositório identifica-se
> internamente como direcionado a `<= 6.17.2`.
>
> A faixa de versões indicada acima segue o aviso da Wordfence
> (`<= 6.17.4`). Sempre verifique a versão exata vulnerável/corrigida junto
> ao aviso do fornecedor antes de testar uma implantação.
---
# Causa Raiz
O comportamento vulnerável está associado à interação entre a
verificação de segurança do widget e o comportamento de desserialização de objetos do PHP.
As funções principais envolvidas são:```text
is_safe_widget_instance()
enable_rendering_widget_copied()
A verificação de segurança é insuficiente porque o PHP pode invocar métodos mágicos durante o seu comportamento de análise/desserialização antes que a validação de segurança pretendida forneça proteção efetiva.
A cadeia também depende de o plugin gerar um valor de integridade válido para a instância de widget fornecida.
Uma das características mais importantes desta vulnerabilidade é que o atacante não precisa de uma conta WordPress existente.
O caminho de ataque abusa da forma como o WordPress expõe o próprio comentário pendente de um usuário através de um URL de hash de moderação.
As condições relevantes são:```text Comments enabled + Comments visible on events + Attacker can submit an event comment + V2 single-event template active
Depois de enviar um comentário, o WordPress pode fornecer uma URL de
moderation-hash não autenticada que permite ao comentarista visualizar o seu próprio
comentário pendente.
Isto cria um mecanismo de entrega não autenticado para a marcação de bloco
manipulada.
---
# Explicação Técnica
## 1. Submissão de Comentário
O atacante submete um comentário associado a um evento.
O comentário não precisa de ser aprovado.
A propriedade importante é que o WordPress pode expor o comentário através
do mecanismo de moderation-hash.
---
## 2. Acesso por Moderation-Hash
O WordPress fornece ao comentarista uma URL que lhe permite
visualizar o seu próprio comentário pendente.
Isto significa que o atacante pode alcançar o caminho de renderização vulnerável sem
esperar pela moderação.
Conceptualmente:```text
POST Comment
|
v
Pending Comment
|
v
Moderation Hash
|
v
Unauthenticated Access
O template V2 de evento único do The Events Calendar processa o conteúdo do evento e o HTML relacionado a comentários.
O caminho de processamento relevante do WordPress eventualmente chega a:```text do_blocks()
Isso é importante porque a marcação de bloco incorporada no conteúdo renderizado
é interpretada como dados de bloco do WordPress.
---
## 4. Dados de Bloco Craftados
O PoC constrói um bloco de widget legado contendo uma instância de widget
serializada.
A implementação de pesquisa constrói o bloco usando uma instância serializada
codificada e um atributo de integridade.
O caminho vulnerável, em última análise, processa esses dados como uma instância de widget.
---
## 5. Bypass de Integridade
O comportamento `enable_rendering_widget_copied()` do plugin pode ser abusado
para produzir um atributo de integridade válido para os dados de widget
controlados pelo atacante.
Isso permite que a instância de widget maliciosa passe pela verificação de
integridade esperada e alcance o caminho de processamento vulnerável.
---
## 6. Manipulação Insegura de Objetos
A proteção vulnerável `is_safe_widget_instance()` é insuficiente
contra o objeto fornecido através da instância de widget craftada.
O comportamento de manipulação de objetos do PHP pode invocar métodos mágicos durante o
processo de desserialização.
O resultado é uma primitiva de Injeção de Objeto PHP explorável.
---
## 7. Cadeia de Gadgets
O PoC de pesquisa constrói estruturas de objetos do WordPress / The Events Calendar
que fornecem comportamento invocável durante a desserialização.
O PoC usa objetos orientados a callback e estruturas de classe serializadas
para construir o payload de pesquisa.
---
## 8. Execução de Código
O impacto final é a Execução Remota de Código.
O PoC contém um estágio de webshell de pesquisa e lógica de criação de
administrador.
Para verificação segura da vulnerabilidade, a fronteira de segurança importante já
está demonstrada pela execução bem-sucedida da cadeia de desserialização
vulnerável.
---
# Por que a Vulnerabilidade é Crítica
A combinação de:```text
Unauthenticated
+
Remote
+
PHP Object Injection
+
RCE
cria um caminho de ataque de alto impacto.
Um atacante não precisa de:
O principal pré-requisito ambiental é que o caminho vulnerável de renderização de evento/comentário seja acessível.
O repositório contém uma implementação de pesquisa em Python.
O PoC enviado é um executor assíncrono em torno da lógica de pesquisa original.
Ele utiliza:```text Python aiohttp rich
A implementação executa a cadeia de vulnerabilidades por meio de entrega e verificação de payload em estágios.
O código-fonte do PoC descreve sua arquitetura como:```text
payload building
|
v
stage 1
|
v
verification
|
v
stage 2
A implementação de pesquisa inclui funcionalidades para:
O PoC também contém verificações cientes da plataforma para ambientes Windows e Unix-like.
A ferramenta de pesquisa pode ser usada contra uma instalação WordPress autorizada individual.
Conceitualmente:```text Single URL | v Target Discovery | v Event Discovery | v Comment Delivery | v Vulnerability Trigger | v Verification
Um fluxo de trabalho de alvo único é útil para:
* Laboratórios locais
* Sistemas de staging
* Reprodução de CVE
* Testes de fornecedores
* Testes de penetração autorizados
* Pesquisa de segurança
---
# Lista de URLs
O executor assíncrono também suporta uma lista de URLs.
O formato de entrada é:```text
one URL per line
Exemplo:```text https://lab-wordpress-01.example https://lab-wordpress-02.example https://lab-wordpress-03.example
Linhas em branco e comentários podem ser ignorados.
O runner carrega os alvos e processa-os concorrentemente usando a
contagem de threads/concorrência configurada.
---
# Processamento Concorrente
O PoC suporta o processamento concorrente de múltiplos alvos.
Conceitualmente:```text
URL LIST
|
+-----------+-----------+
| | |
v v v
Worker 1 Worker 2 Worker 3
| | |
v v v
Target Target Target
| | |
+-----------+-----------+
|
v
Results
A implementação usa um semáforo assíncrono para controlar o nível de concorrência.
A concorrência padrão configurada no runner é 20.
O runner assíncrono pode criar dois arquivos de resultado:```text shells.txt admins.txt
`shells.txt` contém URLs de shells carregadas descobertas.
`admins.txt` contém informações de resultados de administrador no formato:```text
url | user | pass
[!WARNING] Esses arquivos podem conter credenciais extremamente sensíveis e artefatos de pós-exploração.
Nunca publique arquivos de resultado gerados no GitHub.
Para pesquisa pública de vulnerabilidades, mantenha esses arquivos fora do repositório
Git e adicione-os ao .gitignore.
.gitignore recomendado```gitignoreshells.txt admins.txt
For responsible vulnerability validation:
START
|
v
Verificar versão do plugin
|
v
Verificar pré-requisitos
|
v
Confirmar que os comentários estão habilitados
|
v
Confirmar que os eventos expõem comentários
|
v
Reproduzir em um laboratório
|
v
Confirmar comportamento vulnerável
|
v
Registrar evidências e logs
|
v
Parar / divulgar```
Use the minimum level of interaction required to prove the finding.
---
# Important Prerequisites
The Wordfence advisory identifies the following important condition:
```text
Os comentários devem estar ativados
e
os comentários devem estar visíveis nos 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 operacional
Usuário de execução atual
Diretório de trabalho atual
Raiz do documento
Software do servidor
Host HTTP
Informações do 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
PHP Object Graph
|
v
Objeto Serializado
|
v
Codificação Base64
|
v
Bloco de Widget Legado
|
v
WordPress do_blocks()
|
v
The Events Calendar
|
v
Desserialização de Objeto```
---
# 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
Diretório de trabalho atual
Usuário de execução
Raiz do documento
Informações do servidor
Informações do 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
Execução Remota de Código
+
Acesso Persistente como Administrador do 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
Versão do plugin
+
Evento alcançável
+
Entrega de comentário
+
Renderização de hash de moderação
+
Processamento de widget vulnerável
+
Evidência de execução 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
Logs do Servidor Web
+
Logs do WordPress
+
Atividade do Banco de Dados
+
Integridade de Arquivos
+
Contas de Administrador```
---
# Indicators of Compromise
Potential indicators include:
```text
Contas de administrador inesperadas
Diretórios de plugins inesperados
Arquivos PHP inesperados
Arquivos suspeitos em wp-content/uploads/
Comentários de eventos inesperados
Requisições de hash de moderação anormais
Requisições relacionadas a widgets inesperadas
Execução 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 alvos reais
credenciais geradas
arquivos de webshell
saída de phpinfo capturada
dumps de banco de dados
informações do ambiente do servidor
dados de teste 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
V2 Single Event Template
|
v
WordPress do_blocks()
|
v
Legacy Widget Block
|
v
Forged Widget Instance
|
v
Valid Integrity Attribute
|
v
is_safe_widget_instance()
|
v
PHP Object Deserialization
|
v
Magic Method Invocation
|
v
PHP Object Injection
|
v
Remote Code Execution```
---
# 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
Comentários de eventos
+
URL de hash de moderação do WordPress
+
Renderização 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
Validação insuficiente de widgets
+
Comportamento de magic-method do PHP
+
Atributo de integridade forjado
+
do_blocks()
+
Comentários de eventos públicos
+
Acesso ao 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
Vulnerabilidade do The Events Calendar
RCE do The Events Calendar
PHP Object Injection do The Events Calendar
WordPress
CVE-2026-78006 POC
Segurança do WordPress
Vulnerabilidade do WordPress
RCE do WordPress
PHP Object Injection
PHP Deserialization
RCE Não Autenticado
Remote Code Execution
CVE
Segurança de Plugins do WordPress
RCE em Plugins do WordPress
is_safe_widget_instance
enable_rendering_widget_copied
do_blocks
comentários do WordPress
moderation hash
legacy-widget
pesquisa de segurança
PoC
Proof of Concept
teste de penetração```