Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2024-12877-Exploit — Demonstração educacional de exploit do CVE-2024-12877 para Injeção de Objetos PHP no plugin GiveWP do WordPress. Inclui análise de causa raiz, técnicas de bypass de regex e práticas seguras de exploração. | Kitploit
Ferramentas/GitHubGitHub/soltanali0/cve-2024-12877-exploit
Análise EstáticaAnálise de VulnerabilidadesAnálise de CódigoExploraçãoExploração de Aplicações WebCTFTestes de PenetraçãoAprendizado e EducaçãoDesenvolvimento de Payloads

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
GitHubsoltanali0/cve-2024-12877-exploit

CVE-2024-12877-Exploit

Demonstração educacional de exploit do CVE-2024-12877 para Injeção de Objetos PHP no plugin GiveWP do WordPress. Inclui análise de causa raiz, técnicas de bypass de regex e práticas seguras de exploração.

Ver Repositório
1há 11 mesesAinda não revisado

GO-TO CVE – CVE-2024-12877-Exploit

Semana 66 | Autor: Ali Soltani (soltanali0)

Bem-vindo à Semana 66 da série GO-TO CVE, onde dissecamos vulnerabilidades, analisamos as causas raiz e demonstramos técnicas práticas de exploração em um contexto educacional e seguro.


🚨 Visão Geral

CVE-2024-12877 é uma vulnerabilidade de Injeção de Objetos PHP no GiveWP, um dos plugins de doação do WordPress mais utilizados. O uso inseguro de unserialize() em entrada controlada pelo usuário permite que atacantes acionem métodos mágicos do PHP (como __wakeup()), podendo levar a:

  • Execução Remota de Código (RCE) ⚡
  • Roubo de dados confidenciais 🕵️‍♂️
  • Escalação de privilégios 🔑
  • Comprometimento total do servidor ☠️

CVSS: 9.8 Crítico | Vetor: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H


🧩 Sobre o GiveWP

imagem

O GiveWP alimenta milhares de sites de caridade, ONGs e plataformas de arrecadação de fundos. Como ele lida com dados financeiros e de doadores sensíveis, uma vulnerabilidade aqui tem um impacto altíssimo. Um atacante que explore a injeção de objetos pode escalar de um único plugin para comprometer toda a instalação do WordPress e o servidor subjacente.


⚙️ Detalhes da Vulnerabilidade

  • Causa raiz: unserialize() em entrada não confiável.

  • Métodos mágicos do PHP: O PHP os invoca automaticamente durante o ciclo de vida do objeto:

  • A vulnerabilidade decorre do uso inseguro da função PHP unserialize() em entrada controlada pelo usuário. Embora unserialize() seja projetada para reconstruir estruturas de dados do PHP, ela traz um efeito colateral perigoso: quando objetos são reconstruídos, o PHP invoca automaticamente os métodos mágicos.

Métodos Mágicos no PHP

  • __wakeup() – acionado quando um objeto é desserializado

  • __destruct(), __toString(), __get/__set(), __call/__callStatic() – podem ser explorados para execução maliciosa

  • Validação por Regex: O GiveWP implementou verificações de regex para detectar entrada serializada. Embora a nova regex capture mais tipos de dados, regex não pode prevenir de forma confiável a injeção de objetos.

imagem

Ponto-chave:

Com um objeto serializado especialmente criado, o atacante define as propriedades do objeto, e o próprio PHP executa a lógica do atacante ao invocar os métodos mágicos.

Validação por Regex

O GiveWP implementou validação baseada em regex para verificar se a entrada era serializada. Regex Antiga (incompleta)

• Reconhecia apenas arrays e objetos.

• Outros tipos serializados (string, int, bool, float, null) ignoravam a detecção.

carbon

Nova Regex (melhorada, mas falha)

• Reconhece todos os tipos serializados do PHP.

• Bloqueia alguns payloads triviais.

• Mas o problema central permanece: se unserialize() for usado em entrada do usuário, a regex não vai salvar você.

carbon (1)

Este trecho foi escrito para comparar duas implementações diferentes de regex:

• is_serialized_old() → a versão antiga, que apenas detecta arrays e objetos.

• is_serialized_new() → a versão melhorada, que reconhece todos os tipos de dados serializados do PHP (arrays, objetos, strings, inteiros, booleanos, floats e null). Criamos um conjunto de valores de teste (array, object, string, integer, boolean, float, null), serializamo-los e verificamos cada um contra ambas as funções de regex. Em termos simples:

imagem

E depois de executar este código no seu dokcer, veja este resultado no navegador.

imagem

💥 Demonstração do Exploit

Passo 1

carbon (2)

Passo 2: Criar uma classe vulnerável

carbon (4)

Esta classe possui um método __wakeup() que será executado automaticamente quando o objeto for desserializado.

Passo 3: Criar o payload

imagem

Passo 4: Saída Depois de salvar o arquivo, você pode ver este exploit neste arquivo.

imagem

Exploit :

imagem

• Regex Antiga: FALSE → falhou ao detectar o payload.

• Nova Regex: TRUE → detectou-o como entrada serializada.

• Execução: Hello RCE! → O payload foi desserializado, e o método mágico __wakeup() executou código controlado pelo atacante.

Prevenção • Não use unserialize() em entrada não confiável. Substitua-o por json_decode() ou outras alternativas mais seguras.

• Mantenha o GiveWP e todos os plugins do WordPress atualizados.

• Implemente um Web Application Firewall (WAF) para bloquear payloads serializados maliciosos.

• Siga o Princípio do Menor Privilégio: execute contas PHP e de banco de dados com as permissões mínimas necessárias.

Resultados:

  • Regex Antiga: ❌ falha ao detectar o payload
  • Nova Regex: ✅ detecta entrada serializada, mas não pode prevenir RCE

Ponto-chave: Nunca confie em regex para proteger unserialize(). A abordagem mais segura é evitar totalmente a desserialização de entrada não confiável.


🛡 Prevenção

  • Não use unserialize() em entrada não confiável; prefira json_decode() ou outras alternativas seguras.
  • Mantenha o GiveWP e todos os plugins do WordPress atualizados.
  • Implemente um Web Application Firewall (WAF) para bloquear payloads maliciosos.
  • Aplique o Princípio do Menor Privilégio para contas PHP e de banco de dados.

📱 Acompanhe Nossa Análise Semanal de CVEs

Eu administro dois canais no Telegram dedicados à pesquisa e exploração de vulnerabilidades:

  1. Episódios Semanais GO-TO CVE: Toda semana, mergulhamos fundo em um novo CVE e compartilhamos análises detalhadas, demonstrações e insights. 🔗 Junte-se a nós aqui

  2. CVEdb – Arquivo de Exploits: Este canal arquiva exploits de 1 dia e PoCs personalizados para CVEs. Um ótimo recurso para pesquisadores que desejam ver técnicas de exploração ativas. 🔗 Junte-se ao CVEdb

Siga os canais para ficar por dentro das últimas CVEs, técnicas de exploração e insights de pesquisa em segurança.


📚 Referências

  • NVD CVE-2024-12877
  • Análise do Wordfence
  • Código-fonte do GiveWP

⚖️ Aviso Legal

Este repositório é estritamente para fins educacionais e de pesquisa. Explorar vulnerabilidades sem permissão é ilegal e antiético. O autor não é responsável pelo mau uso.

Baixar ferramenta