Backend es una máquina Linux de dificultad fácil de DockerLabs. La vía de explotación combina la detección de una inyección SQL en el panel de login, extracción de credenciales con sqlmap, fuerza bruta SSH con Hydra y escalada de privilegios mediante binarios con bit SUID.
1. Puesta en marcha de la máquina
Lo primero que haremos será descargar la máquina y ejecutarla para que se despliegue correctamente. Una vez levantada, podemos observar la IP asignada. En este caso usaremos 172.17.0.2 durante todo el proceso.
2. Enumeración de puertos y servicios (Nmap)
Lo primero será enumerar los puertos y servicios que tiene levantados. Para ello usamos nmap:
sudo nmap -p- -sS -sCV --min-rate 5000 -n -Pn -vvv 172.17.0.2 -oN scanComo podemos observar, están abiertos los puertos 22/tcp (SSH) y 80/tcp (HTTP), por lo que vamos a abrir el navegador para ver qué hay en la web.
3. Panel de login y prueba inicial de SQL Injection
Una vez dentro, podemos observar un panel de login. Vamos a probar si es vulnerable a SQL Injection con el payload:
' or 1=1 --Tras probarlo, se genera un error que nos indica que hay interacción con la base de datos y que puede ser un buen candidato para usar sqlmap.
4. Explotación de la inyección SQL con sqlmap
Vamos a usar sqlmap directamente sobre el formulario para listar las bases de datos:
sqlmap --url 'http://172.17.0.2/login.html' --forms --dbs --batchUna vez terminado, podemos observar que se listan 5 bases de datos. Nos interesa especialmente la base de datos users, así que vamos a enumerar sus tablas:
sqlmap --url 'http://172.17.0.2/login.html' --forms -D users --tables --batchsqlmap encuentra la tabla usuarios. Ahora enumeramos sus columnas:
sqlmap --url 'http://172.17.0.2/login.html' --forms -D users -T usuarios --columns --batchVemos las columnas id, username y password. Dumpeamos los usuarios y contraseñas:
sqlmap --url 'http://172.17.0.2/login.html' --forms -D users -T usuarios -C username,password --dump --batch5. Fuerza bruta sobre SSH con Hydra
Con la información obtenida, creamos dos wordlists: una con los username y otra con las password. Después lanzamos un ataque de fuerza bruta con Hydra contra el servicio SSH (puerto 22):
hydra -L users -P passwords ssh://172.17.0.2Ya tenemos acceso mediante SSH con el usuario pepe. Comprobamos si hay más usuarios en el sistema — solo encontramos a pepe.
6. Enumeración interna: procesos y binarios SUID
Listamos los procesos sin encontrar nada especialmente útil. Buscamos binarios con el bit SUID activado, que podrían permitirnos escalar privilegios:
find / -perm -4000 2>/dev/nullObservamos que tanto ls como grep tienen el bit SUID activado, lo que significa que se ejecutan con los privilegios del propietario del archivo (root). Esto puede ser aprovechado para leer archivos que normalmente solo root podría leer.
7. Lectura del hash de root y cracking con John
Para extraer el hash de la máquina, aprovechamos grep con SUID para leer un archivo protegido. En este caso, el archivo es /root/pass.hash:
/usr/bin/grep "" /root/pass.hashCon el hash en nuestro archivo hash, usamos John the Ripper para crackearlo, indicando el formato y usando la wordlist rockyou.txt:
john --format=Raw-MD5 --wordlist=/usr/share/wordlists/rockyou.txt hashJohn consigue crackear el hash y obtenemos la contraseña de root. Con esto, ya habríamos completado la máquina Backend.
Resumen de técnicas utilizadas
En esta máquina hemos puesto en práctica:
- Enumeración de servicios con Nmap
- Detección y explotación de SQL Injection con sqlmap
- Creación de wordlists y fuerza bruta sobre SSH con Hydra
- Búsqueda de binarios con SUID y abuso de
greppara leer archivos protegidos - Cracking de hashes con John the Ripper
Un laboratorio muy completo para practicar desde la enumeración inicial hasta la escalada de privilegios.