RECONOCIMIENTO — Escaneo de puertos
Lo primero es descubrir qué superficie de ataque tiene el objetivo. Se lanza un escaneo completo de puertos para no dejar nada sin revisar.
Se encuentran tres puertos abiertos. El puerto 8765 es desconocido, así que se profundiza con detección de versiones y scripts:
| PUERTO | ESTADO | SERVICIO | VERSIÓN |
|---|---|---|---|
| 22/tcp | OPEN | SSH | OpenSSH 7.2p2 |
| 80/tcp | OPEN | HTTP | Apache 2.4.18 |
| 8765/tcp | OPEN | HTTP | nginx 1.10.3 |
ENUMERACIÓN — Fichero users.bak
Se lanza gobuster contra el servicio web del puerto 80 para descubrir rutas ocultas:
Entre los resultados aparece el directorio /custom, desde donde es posible descargar un fichero llamado users.bak. Un simple cat no revela nada útil, pero file identifica su naturaleza:
Se renombra a users.sql y se inspecciona con sqlite3:
Con estas credenciales se accede al panel de administración en el puerto 8765, que presenta un formulario para añadir comentarios en formato XML.
XXE INJECTION — Lectura de ficheros
El panel acepta XML y refleja el contenido en la respuesta. Esto lo hace potencialmente vulnerable a XML External Entity (XXE). Primero se comprueba que el XML básico se procesa correctamente, luego se inyecta una entidad externa maliciosa:
La respuesta devuelve el contenido de /etc/passwd. Revisando el código fuente de la página se encuentran dos pistas clave:
El usuario barry tiene una clave SSH privada. Se extrae con XXE:
ssh2john + john para obtener la passphrase. Además, la clave tenía un espacio extra al inicio del fichero que impedía su uso — se elimina con sed -i '1s/^ //' id_rsa.
PRIVILEGE ESCALATION — PATH Hijacking
En el directorio del usuario joe existe un binario con bit SUID llamado live_log que muestra logs de nginx en tiempo real. Se analiza con strings:
tail usando ruta relativa, lo que permite sustituirlo con un ejecutable malicioso manipulando la variable $PATH.
Se crea un binario falso llamado tail en /tmp que lanza una bash con privilegios, se añade /tmp al inicio del PATH y se ejecuta el binario SUID:
CADENA DE ATAQUE
/custom con el fichero users.bak (SQLite con credenciales admin)admin:bulldog19 → acceso al panel XML en :8765live_log llama a tail con ruta relativa → /tmp/tail malicioso → shell de root