Red de laboratorio *.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 Tomcat con 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.


Resumen ejecutivo

# 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

1. tomcat — credenciales por defecto

Reconocimiento amplio del objetivo:

nmap -Pn <IP_tomcat>

Puerto 8080 y servidor

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).

Credenciales por defecto

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).

Deploy del .war malicioso

Los .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:

¿Bajo qué usuario corre Tomcat?

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).

Flag del usuario

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.


2. bookstore — SQLi + crackeo de hashes

Reconocimiento

nmap -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.

Inyección SQL en la búsqueda

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.

Schemas y tablas de la BD

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).

Contenido de la tabla de usuarios y crackeo de hash

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.


3. administrator — panel oculto + webshell + root

Descubrir el panel de administración oculto

Fuerza 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

Acceso con credenciales anteriores

Con las credenciales extraídas en la fase 2 (user:Admin / pass:P@ssw0rd!) ingresamos al panel. → Initial Access · T1190 + Credential Access · T1110.

Upload de webshell PHP → reverse shell

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.

curl "http://administrator/administrator/uploads/<webshell>.php?cmd=cat%20/flag"

Escalada de privilegios a root

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).


4. Lecciones defensivas (lo que este lab enseña al otro lado)

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.