*.uoc — Ataque guiado a 3 máquinas (Tomcat, MySQL/PHP, Admin)Tipo: Laboratorio educativo (privado, red aislada) · SO mixtos: Linux + aplicaciones web Tema: Reconocimiento → default creds → reverse shell → SQLi → crackeo → webshell → privesc → root Enfoque: cada fase mapeada a MITRE ATT&CK (táctica + técnica)
Contexto: laboratorio con 3 objetivos que encadenan vectores clásicos de intrusión: un
Tomcatcon credenciales por defecto, una tienda PHP vulnerable a inyección SQL, y un panel de administración oculto. El objetivo es recorrer la misma cadena que usaría un adversario real, conectando cada decisión con el marco MITRE ATT&CK.
| # | Objetivo (lab) | Vector | Resultado |
|---|---|---|---|
| 1 | tomcat |
Puerto 8080 + creds default Tomcat | Reverse shell .war → flag /home/tomcat |
| 2 | bookstore |
Apache/PHP + SQLi | Dump de hashes + crackeo MD5 → creds de sesión |
| 3 | administrator |
Panel oculto + upload webshell | Reverse shell → flag /flag → privesc → flag root /flag/root.txt |
Tácticas y técnicas MITRE ATT&CK recorridas:
| Táctica | Técnica(s) | Dónde |
|---|---|---|
| Reconnaissance / Discovery | T1046 Network Service Scanning · T1010 Application Window Discovery | Escaneos nmap en los 3 objetivos |
| Initial Access | T1190 Exploit Public-Facing Application | Login Tomcat default, SQLi, admin oculto |
| Credential Access | T1110 Brute Force · T1555 Credentials from Password Stores · T1552 Unsecured Credentials | Hash MD5, creds por defecto |
| Execution | T1203 Exploitation for Client Execution · T1059.003 Command and Scripting Interpreter (PHP) | Subir .war, ejecutar webshell |
| Persistence | T1543 Create or Modify System Process (war máligno / servicio) · T1509 Web Shell | Despliegue de reverse/webshell persistente |
| Privilege Escalation | T1203 · T1083 File and Directory Discovery (SUID) | Binario con permisos excesivos |
| Collection | T1005 Data from Local System · T1213 Data from Information Repositories | Banderas, dump de BD |
| Command & Control | TA0011 · T1219 Remote Access Tools · T1071.001 Aplication Layer Protocol | Túneles reverse shell |
| Exfiltration | T1041 Exfiltration Over C2 Channel | Banderas vía C2 |
tomcat — credenciales por defectoReconocimiento amplio del objetivo:
nmap -Pn <IP_tomcat>
nmap -oX - -sV --script=http-title,http-server-header -p 8080,8009 <IP_tomcat>
Resultado: 8080/tcp → Apache Tomcat/Coyote JSP engine 1.1 (title 401 Unauthorized) → es un Tomcat detrás del Manager App.
Ruta relativa al Manager App: /manager/html (protegida por Basic Auth). Aplica T1010 Application Window Discovery (identificar la ventana de administración antes de explotarla).
Con Nikto se detectan credenciales default de Tomcat:
nikto -h tomcat -p 8080
# user: tomcat / pass: s3cret
Esto clasifica en TA0006 Credential Access; con esas credenciales se pasa a T1078 Valid Accounts (uso de cuentas legítimas para acceso).
.war maliciosoLos .war (aplicaciones Java empaquetadas) se pueden desplegar desde el Manager. Construimos un .war con reverse shell (Metasploit), subimos al Manager App, ponemos el listener y ganamos la shell:
Con la shell, listamos procesos:
ps -ef | head
El PID 1 del contenedor es una aplicación Java ejecutándose como usuario tomcat → la app y el servidor corren como tomcat.
Aplica Tactic: Privilege Escalation/Persistence (TA0004/TA0003) · T1082 System Information Discovery (usuarios/procesos del sistema para planear escalada).
Vía la reverse shell, en el home del usuario:
cat /home/tomcat/flag
→ Collection (TA0009) · T1005 Data from Local System + Credential Access (TA0006) · T1056 Input Capture (se captura data sensible del sistema desde la shell). El CTF cierra su primera fase.
bookstore — SQLi + crackeo de hashesnmap -sT bookstore
Solo 80/tcp abierto, sirviendo HTTP. Con whatweb:
whatweb bookstore
# PHP sobre Apache/2.4.52
Aplica T1046 Network Service Scanning (Discovery) + se entreve frenéticamente T1190 Exploit Public-Facing Application.
La caja de búsqueda de libros no sanitiza la entrada. Con:
OR '1'='1
devuelve la totalidad de registros → SQLi confirmada. Con sqlmap:
sqlmap -u "http://bookstore" --dbs
Identificamos el motor: MySQL (cambia la sintaxis de metadatos/comentarios que usa sqlmap).
MTIRE de esta fase: - Initial Access · T1190 — explotar aplicación expuesta. - Discovery · T1071 Application Layer Protocol — obtener info de la BD vía protocolo de aplicación. - Collection · T1213 Data from Information Repositories — recolección desde un repositorio de datos (la BD). - Exfiltration · T1041 Exfiltration Over C2 Channel — los datos robados salen por el mismo canal usado para controlar al objetivo.
sqlmap -u "http://bookstore" --dbs --tables
Punto clave: los metadatos y la sintaxis de comentarios cambian según el gestor (lo resuelve sqlmap automáticamente: --dbs, --tables, luego dump de la tabla objetivo).
Encontramos las credenciales de los usuarios; las contraseñas están en hash MD5 (formato inseguro). Con una herramienta online (ej. md5online) lo desciframos con diccionario.
user:Admin / pass:P@ssw0rd! → T1078 Valid Accounts.administrator — panel oculto + webshell + rootFuerza bruta de directorios con dirbuster:
# URL objetivo: http://administrator
# lista de palabras: /usr/share/wordlists/big.txt
# métodos: GET, POST
Aparece una ruta de administración. → Discovery · T1071
Con las credenciales extraídas en la fase 2 (user:Admin / pass:P@ssw0rd!) ingresamos al panel. → Initial Access · T1190 + Credential Access · T1110.
El administrador permite subir archivos. Como la plataforma es PHP, montamos una webshell PHP vía el formulario y logramos ejecutar comandos remotos.
Caída técnica: el nombre/id del archivo subido se re-encodea en la BD. Con el inspector del navegador se ve cómo se codifica el nombre guardado para construir la URL real del archivo y llegar a él por navegador. De ahí, ?cmd=<comando> (gobernado/encodeado con Burp) ejecuta comandos de forma remota.
/flag:curl "http://administrator/administrator/uploads/<webshell>.php?cmd=cat%20/flag"
Con la shell, escaneamos el sistema en busca de archivos y permisos excesivos (promiscuos). Encontramos un binario con SUID que se puede explotar:
Con root, leemos la flag final:
cat /flag/root.txt
Resultado: red comprometida en su totalidad (CTF completo, banderas de tomcat + bookstore→administrator capturadas).
| Blue team — control | Cómo corta esta cadena |
|---|---|
| Quitar credenciales por defecto + rotación | Neutraliza el primer acceso a Tomcat (T1078/T1110) |
Limitar /manager/html (solo red interna / IP list) |
Bloquea el deploy de un .war malicioso (T1203) |
| WAF / parametrización de SQL | Anula la SQLi y el rugido de sqlmap (T1190/T1071/T1213) |
| Hash fuerte en BD (bcrypt/argon2, no MD5) | Hace inviable el crackeo por diccionario (T1552/T1110) |
| Escaneo de binarios SUID / usuario de menor privilegio | Quita la escalada local a root (T1203/T1083) |
Monitoreo de ?cmd= / accesos a rutas de upload |
Detecta la webshell persistente (T1509/T1059.003) |
Todas las fases se ubican en el flujo MITRE ATT&CK tal como las recorrería un adversario: reconnaissance → initial access → credential access → execution → persistence → privilege escalation → collection → exfiltration.
Laboratorio propio en red aislada, ejecutado en entorno educativo controlado. Sin IPs reales, sin datos de producción y con flags redactadas. La documentación acompaña la cadena ofensiva con su correspondencia defensiva en MITRE ATT&CK.