NodeCaption: automatización expuesta, credenciales reutilizadas y ejecución remota en Linux
Cómo una cadena de malas decisiones termina convirtiendo una aplicación web expuesta y una plataforma de automatización en una puerta al sistema.
Principiante · Linux
URL del reto: labs.thehackerslabs.com/machines/118
Por qué la diseñé
NodeCaption es una cadena de malas decisiones pequeñas que termina convirtiendo una web expuesta y una plataforma de automatización en una puerta abierta al sistema. Exposición de más, información filtrada en el propio HTML, una credencial reutilizada y una herramienta de automatización con permiso para ejecutar. La monté para enseñar cómo la distancia entre una autenticación floja y el control total del host se acorta muchísimo cuando esos descuidos se apoyan unos en otros.
No hace falta una vulnerabilidad rara para tumbar un host si la superficie está mal pensada. Quería que quien la resuelve viera cada eslabón en su sitio, desde el comentario olvidado en una página hasta la shell de root.
La máquina de un vistazo
Expone SSH, un Apache en el puerto 8765 y una instancia de n8n en el 5678. La cadena arranca en un comentario del HTML que filtra un usuario y la política de contraseñas, sigue por un login web que cae a fuerza bruta, reutiliza esa credencial en n8n, abusa de un nodo de ejecución de comandos para entrar al host y remata con un sudo mal delegado sobre un editor.
Cómo la monté, paso a paso
Un comentario HTML que lo regala casi todo
En la página del Apache (puerto 8765) dejé un comentario en el código con un correo válido y una pista sobre la política mínima de contraseña. No rompe nada por sí solo, pero entrega un usuario y reduce muchísimo el espacio de búsqueda para el ataque de credenciales que viene después. Es el descuido de publicar en el front lo que debería quedarse en una nota interna.
Un login web con contraseña floja
Detrás, en login.php, puse un formulario con una contraseña pobre para ese usuario, de las que un ffuf con rockyou saca sin pelear. Con el correo filtrado y una política de contraseñas conocida, el formulario deja de ser una barrera. Lo que rompe esto es la combinación de usuario expuesto, clave débil y un login accesible sin frenos a los intentos automatizados.
La misma credencial, reutilizada en n8n
La credencial del panel web abre también la instancia de n8n del puerto 5678. Ese es el error que quería representar, la reutilización de un mismo secreto entre aplicaciones distintas. No hace falta comprometer dos sistemas si ambos dependen de la misma llave, y aquí esa llave abre la plataforma con más capacidad de impacto sobre el host.
El nodo que ejecuta comandos
Dentro de n8n creé un flujo con un nodo Execute Command, que ejecuta directamente sobre el sistema. Con eso monté una reverse shell y salí a una consola interactiva como el usuario thl. n8n no es inseguro por definición. El problema aparece cuando una plataforma con capacidad de orquestación y ejecución queda expuesta a credenciales débiles o reutilizadas, y deja de ser una herramienta de automatización para volverse una vía de ejecución remota.
El remate, un sudo mal delegado sobre vi
Ya como thl, la delegación de sudo permite ejecutar vi con privilegios. Un editor interactivo autorizado en sudo se convierte en una escalada directa, porque desde dentro se abre una shell (sudo vi -c ':!/bin/sh' /dev/null) que corre como root. Es la mala delegación de privilegios de siempre, esta vez sobre una herramienta que nadie mira como peligrosa.
Qué quería enseñar
NodeCaption tiene varias fases, pero no premia el ruido. Enseña una secuencia concreta de errores encadenados.
| Fase | Qué enseña | Error que representa |
|---|---|---|
| Comentario en HTML | El front filtra información operativa | Datos útiles expuestos en contenido público |
| login.php accesible | Una autenticación floja se automatiza | Paneles publicados sin endurecer |
| Reutilización en n8n | Un secreto compartido multiplica el daño | Mismas credenciales entre aplicaciones |
| Nodo Execute Command | La automatización puede ejecutar sobre el host | Plataformas con capacidad operativa excesiva |
| sudo vi | Escalada local clásica | Privilegios mal delegados sobre binarios interactivos |
Lo que importa es ver cómo una cadena de decisiones pequeñas convierte una web expuesta y una plataforma de automatización en una puerta completa al sistema. Llegar a root es el final de esa cadena, no un truco suelto.