🟢ToolBox

Write-up de la máquina ToolBox de HackTheBox #writeup #walkthrough

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.

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

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

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.

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.

ftp -p 10.10.10.236

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.

Enumeración web

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

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

Ahora vamos a ver su contenido en el navegador web.

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.

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

admin'-- -

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.

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.

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

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

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

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.

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

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

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

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

Y podemos conectarnos a la máquina víctima mediante shell.

Y buscamos la flag user.txt

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.

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".

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.

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

Intentaremos saltar mediante SSH desde la terminal "postgres"

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

Ya somos usuarios Docker. Vamos a comprobar los privilegios de este usuario.

sudo -l

Este usuario puede utilizar sudo sin contraseña.

ROOT

Enumeramos los directorios disponibles para el usuario Docker.

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

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

Vamos a ver el contenido de .ssh.

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.

Y le damos privilegios para poder utilizarla en conexiones SSH.

chmod 600 id_rsa

Intentamos la conexión SSH con la clave "id_rsa" encontrada desde nuestra terminal.

ssh [email protected] -i id_rsa

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

Y ya estaría acabada la máquina ToolBox.

Last updated