> For the complete documentation index, see [llms.txt](https://wiki.securiters.com/securiters-wiki/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://wiki.securiters.com/securiters-wiki/write-ups/proving-grounds/tre.md).

# Tre

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

## Enumeración

### Servicios abiertos

Vamos a comenzar la resolución del CTF Tre, enumerando que puertos tiene abiertos esta máquina. Comenzamos con una enumeración rápida de los servicios.

```
nmap -p- --open --min-rate 1000 -Pn -n -vvv 192.168.84.84 
```

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

Tres puertos abiertos: 22, 80 y 8082. El siguiente paso será la enumeración profunda de estos servicios. Esto lo hacemos de la siguiente forma:

```
nmap -p22,80,8082 -Pn -n -sVC -vvv 192.168.84.84 
```

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

Servicios abiertos:

* Puerto 22 -> SSH -> OpenSSH 7.9
* Puerto 80 -> HTTP -> Apache httpd 2.4.38
* Puerto 8082 -> HTTP -> nginx 1.14.2

### Enumeración Web

La máquina Tre ejecuta dos servicios http, en el puerto 80 y 8082. Vamos a comenzar enumerando el puerto 80.

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

Consultando el contenido del puerto 8082, vemos la misma imagen.&#x20;

Vamos a continuar enumerando directorios y archivos. Esto vamos a hacerlo con la herramienta feroxbuster.

```
feroxbuster -u http://192.168.84.84:80 -s200,301 -x html,txt,php -w /usr/share/wordlists/dirb/big.txt
```

Después de un momento, encontramos dos resultados que pueden ser interesantes.

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

En adminer.php, encontramos un formulario de inicio de sesión para lo que parece una base de datos.

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

Vamos a volver a enumerar para el directorio "/mantisbt".

```
feroxbuster -u http://192.168.84.84/mantisbt -s200,301 -x html,txt,php -w /usr/share/wordlists/dirb/big.txt
```

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

Encontramos un directorio /config, que puede contener información interesante.

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

Encontramos unas credenciales en el archivo "a.txt". Vamos a probarlas en el formulario que encontramos anteriormente.&#x20;

<figure><img src="/files/RRf2G1ILCpq3DDGVD7kx" alt=""><figcaption><p>mantissuser:password@123AS</p></figcaption></figure>

Estas credenciales nos permiten acceder a la base de datos del sitio Web.

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

Vamos a buscar credenciales de usuarios en la base de datos.

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

## Explotación

Encontramos credenciales para el usuario administrator y tre. Probamos estas credenciales en el formulario de inicio de sesión <http://192.168.84.84/mantisbt/login_page.php> pero no son válidas. Recordamos que encontramos el puerto 22 abierto durante la enumeración inicial de puertos.

Las credenciales del usuario "tre" son válidas para iniciar sesión a través de SSH.

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

El siguiente paso será la búsqueda de la flag local.txt

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

## Elevación de privilegios

Comenzamos enumerando que puede ejecutar el usuario "tre" con privilegios elevados sin necesidad de contraseña.

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

El usuario tre puede ejecutar /sbin/shutdown en la máquina sin contraseña pero si lo ejecutamos, mataremos la sesión así que no es buena idea.&#x20;

Vamos a enumerar vectores posibles de elevación de privilegios utilizando la herramienta LinPeas.

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

Encontramos el siguiente ejecutable que puede ser interesante. Veamos su contenido.&#x20;

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

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

El usuario "root" es el propietario del archivo con permiso de lectura y escritura para todos.

Este script realiza una verificación del sistema en cada reinicio. Podemos tratar de añadir contenido a este archivo que queramos que se ejecute al inicio del sistema. Debido a que se ejecuta como root y podemos reiniciar la máquina, podemos agregar permisos SUID a un binario arbitrario, como /usr/bin/find. Podemos agregar la siguiente instrucción al archivo.

```
chmod +s /usr/bin/find 
```

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

El siguiente paso será reiniciar el sistema.

```
sudo shutdown -r now
```

Una vez reiniciada la máquina, vamos a consultar que archivos tiene activo el bit SUID.&#x20;

```
find / -perm -u=s -type f 2>/dev/null
```

<figure><img src="/files/7RAdt2Csx1IXYeAiR5wv" alt=""><figcaption></figcaption></figure>

Ahora consultamos en GTFOBins como elevar privilegios utilizando este binario.

<figure><img src="/files/5bK5gilbdSzrLSblOGaC" alt=""><figcaption></figcaption></figure>

```
./find . -exec /bin/sh -p \; -quit
```

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

Y obtenemos privilegios máximos dentro de la máquina objetivo. Solo quedará buscar la fla proof.txt.

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

{% embed url="<https://www.youtube.com/watch?v=bHeSn3uDKwo>" %}

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