> For the complete documentation index, see [llms.txt](https://propus.gitbook.io/hackbook/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://propus.gitbook.io/hackbook/writeups/dockerlabs/nodeclimb.md).

# 🟩 NodeClimb

## 🕵️ Reconocimiento

Realizamos un escaneo de puertos con nmap:

<figure><img src="/files/hRnwrmb4qsWIvfYYqNVY" alt=""><figcaption></figcaption></figure>

Vemos que se encuentra abierto el puerto FTP y SSH. En el servicio FTP nos permiten loguearnos anónimamente. Vamos a ver si encontramos algún archivo.

<figure><img src="/files/IxkI3urI4xNpGqx2l2PH" alt=""><figcaption></figcaption></figure>

Hay un zip llamado `secretitopicaron.zip`. Nos lo llevamos a nuestra máquina para manipularlo.

## 🚪 Ganando acceso

El archivo zip tiene una contraseña, por lo que no podemos extraer su contenido. Usando `fcrackzip` podemos hacerle fuerza bruta. En mi caso, haré un ataque de diccionario con el `rockyou.txt`:

```bash
fcrackzip -u -D -p /usr/share/wordlists/rockyou.txt secretitopicaron.zip
```

<figure><img src="/files/FvVuxwDjZiWak96YQAuf" alt=""><figcaption></figcaption></figure>

Encontramos la contraseña: `password1`. Ahora sí podemos ver el contenido del zip:

<figure><img src="/files/9V0CJym4yqJbjO6ROtp3" alt=""><figcaption></figcaption></figure>

Accedemos vía SSH con las credenciales encontradas:

<figure><img src="/files/qP5yEUHKKU3lj5j0pADn" alt=""><figcaption></figcaption></figure>

## 💥 Escalada de privilegios

Verificamos los permisos que tenemos con sudo en el sistema:

<figure><img src="/files/nI33NjE15miltXuPtTqx" alt=""><figcaption></figcaption></figure>

Podemos ejecutar `/usr/bin/node /home/mario/script.js` como cualquier usuario (nos interesa el root) sin necesidad de contraseña. El fichero script.js está vacío, y como tenemos permisos de escritura podemos modificarlo. En [gtfobins](https://gtfobins.github.io/) encontramos una manera de obtener una shell en node. Si ejecutamos el script con sudo, obtendríamos una shell como root:

<figure><img src="/files/HkQXCYI1BvfSyzwGVP9K" alt=""><figcaption></figcaption></figure>
