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

# 🟩 Psycho

## 🕵️ Reconocimiento

Comenzamos con un escaneo de puertos con `nmap`:

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

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

Tenemos abiertos únicamente los servicios HTTP y SSH. Realizamos un escaneo de directorios con `ffuf` al servicio web:

```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
```

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

No hay nada que llame la atención, por lo que nos metemos desde el navegador para ver el contenido de la página.

<figure><img src="/files/2ebvaE7RxaZ2JJFiBtwd" alt=""><figcaption></figcaption></figure>

Al final de la página aparece un mensaje de error. Es posible que esté intentando procesar algún parámetro, ya que estamos ante un fichero `.php`. Con un escaneo usando ffuf encontramos el parámetro oculto. Usamos de referencia el tamaño del contenido devuelto por el servicio.

```bash
ffuf -w /usr/share/wordlists/SecLists-2025.2/Discovery/Web-Content/burp-parameter-names.txt -u "http://$IPTARGET/index.php?FUZZ=test" -fs 2596
```

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

El parámetro oculto era secret. Comprobamos si este parámetro es usado para mostrar el contenido de ficheros. Probamos con un fichero que se encuentra dentro del directorio `assets`, que conocemos porque hay directory listing habilitado.

```
http://172.17.0.2/index.php?secret=assets/background.jpg
```

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

Efectivamente podemos leer ficheros a través de este parámetro.

## 🚪 Ganando acceso

Leemos el fichero `/etc/passwd` para obtener los usuarios de la máquina.

```
http://172.17.0.2/index.php?secret=../../../../../../../../etc/passwd
```

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

Probando fuerza bruta con los usuarios `vaxei` y `luisillo`, no encontramos nada. Si intentamos coger la clave RSA para conectarnos por SSH directamente a la máquina, vemos que podemos leer la clave del directorio personal de `vaxei`.

```
http://172.17.0.2/index.php?secret=../../../../../../../../home/vaxei/.ssh/id_rsa
```

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

Copiamos el contenido en nuestra máquina y nos conectamos por SSH.

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

## 💥 Escalada de privilegios

Comprobamos los permisos con `sudo` del usuario `vaxei`.

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

Podemos ejecutar el binario `/usr/bin/perl` como el usuario `luisillo` sin necesidad de introducir contraseña. En [gtfobins](https://gtfobins.org/gtfobins/) encontramos una manera de aprovechar esta configuración:

```bash
sudo -u luisillo perl -e 'exec "/bin/sh"'
```

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

Si vemos ahora los permisos con sudo de este usuario, encontramos lo siguiente:

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

Podemos ejecutar `/usr/bin/python3 /opt/paw.py` como el usuario `root`. Solo tenemos permisos de lectura sobre este fichero, así que no podemos modificarlo para obtener una shell.

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

Secuestramos la función `run` de la librería `subprocess`.

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

Y ejecutamos el script con sudo.

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