Skip to main content
HackTheBox machines - Multimaster

HackTheBox machines – Multimaster Writeup

Multimaster es una de las maquinas existentes actualmente en la plataforma de hacking HackTheBox.

Multimaster es una de las maquinas existentes actualmente en la plataforma de hacking HackTheBox y es de dificultad Insane, en otras palabras locura de máquina, y es por el momento, una de las máquinas más difíciles que he realizado en esta plataforma.

En este caso se trata de una máquina basada en el Sistema Operativo Windows.

 

Escaneo de puertos

Como de costumbre, agregamos la IP de la máquina Multimaster 10.10.10.179 a /etc/hosts como multimaster.htb y comenzamos con el escaneo de puertos nmap.

Ahora vamos a enumerar los servicios descubiertos a ver por donde podemos atajarlo.

 

Enumeración

Comenzamos revisando el portal web existente en el puerto 80, donde observamos la siguiente pantalla:

HackTheBox machines - Multimaster

 

Hacemos varias pruebas con dirb, enum4linux y otras herramientas de enumeración para intentar obtener más información pero no hubo suerte así que volvemos al portal web.

Damos una vuelta por la misma inspeccionando el código fuente y las opciones existentes y damos con un buscador de usuarios en el enlace de “Colleague Finder”:

HackTheBox machines - Multimaster

 

Observamos las peticiones que realiza el portal a través del buscador y obtenemos la uri /api/getColleagues a través de la cual hace peticiones rest.

Si hacemos cualquier búsqueda nos devuelve los usuarios existentes que coincidan con nuestra búsqueda, así que para hacerlo más amigable para nosotros, utilizaremos curl en lugar del navegador. Lanzamos una simple petición como prueba y nos devuelve un array vacío:

Lanzamos otra prueba vacía y obtenemos un listado con 17 usuarios existentes en la plataforma:

Probamos con diferentes consultas intentando lanzar una injección sql pero nos devuelve en todos los casos un error 403 como en el siguiente ejemplo:

Así que conocemos que existe detrás un WAF que nos está bloqueando, y después de muchas vueltas conseguimos saltarnos el mismo enviando los caracteres codificados en unicode:

Para hacerlo de una forma más rápida nos creamos un simple script en python que codifique la cadena que le pasemos y realice automáticamente la petición, el código es el siguiente:

Hacemos varias pruebas y detectamos el número de campos que existen:

Las tablas existentes:

Y las columnas:

Conocidos ya todos los campos, vamos a intentar obtener las password de los usuarios y conseguimos devolver una consulta que incluye los hashes de los 17 usuarios:

Utilizamos la herramienta hashid instalada en kali por defecto para intentar descubrir el tipo de codificación utilizado para los mismos y obtenemos el siguiente listado:

Así que buscamos los métodos existentes en hashcat:

Y lo ejecutamos a ver cuantos hashes podemos obtener en texto plano:

 

Y conseguimos descifrar tres de ellos, aunque no conocemos a que usuarios pertenecen:

Generamos una lista de usuarios y passwords conocidos hasta el momento y probamos el acceso con CrackMapExec pero no conseguimos ningún acceso así que seguimos probando.

Después de muchas vueltas y pruebas, encontramos un post donde explica como enumerar un AD mediante técnicas de SQL Inyection en SQLServer que nos será muy útil para seguir avanzando.

Necesitaremos obtener el RID y posteriormente el SID para poder enumerar los usuarios, así que nos creamos un script en python para llevar a cabo la enumeración y conseguimos los siguientes resultados:

En este caso no pongo el código del script realizado, ya que no lo voy a dar todo hecho, tocará que cada uno se haga el suyo propio.

Hemos descubierto más usuarios del sistema, así que añadimos los mismos a nuestro listado y volvemos a probar con CrackMapExec y en este caso conseguimos unas credenciales válidas con el usuario tushikikatomo:

 

Obteniendo la flag de user

Con las credenciales obtenidas del usuario tushikikatomo accedemos a la máquina con la tool evil-winrm y tenemos ya la flag de user:

Ya hemos conseguido entrar a la máquina, pero como decía al principio, esta máquina es complicada y todavía nos queda mucho por hacer.

 

Escalando privilegios

Con el usuario obtenido enumeramos los privilegios del mismo y posibles procesos del sistema y encontramos varios procesos de visual studio code:

HackTheBox machines - Multimaster

 

Revisamos la versión del mismo:

Y buscando en google obtenemos una vulnerabilidad, la CVE-2019-1414, que aunque no es el mismo caso nos da bastante información de como debemos de continuar ahora.

La vulnerabilidad es posible de explotar cuando se expone una escucha en debug a usuarios en entorno local, así que siguiendo con nuestra investigación en google encontramos un repositorio en github donde existe una tool que podemos utilizar para llevarlo a cabo y llamada cefdebug.

Subiremos dicha tool a la máquina y realizaremos una primera ejecución para obtener la dirección del servidor:

Subiremos también nc a la máquina para poder lanzar la shell inversa y lanzaremos el comando con nuestras opciones personalizadas:

Y conseguiremos una shell con el usuario cyork en nuestra escucha en kali:

Hemos conseguido otro usuario pero esta shell es un poco incómoda y lenta, probamos a obtener el hash con responder.

Lanzaremos un abuso de net use en la consola de windows:

Y obtendremos el hash del usuario en nuestra escucha con responder:

 

Pasamos este hash obtenido por john y hashcat con diferentes diccionarios, pero parece que esta vez no vamos a tener suerte así que seguiremos buscando como escalar desde la shell obtenida hasta el momento.

Con el usuario obtenido, cyork, buscamos las posibilidades de este usuario y encontramos una carpeta a la cual antes no teníamos acceso y cuyo contenido es el siguiente:

Después de varias vueltas, nos descargamos los ficheros dll de la misma y hacemos hincapié en uno en concreto llamado MultimasterAPI.dll

 

Así que nos descargaremos un decompilador de .NET para poder visualizar el código fuente del mismo. En nuestro caso hemos utilizado ILSpy pero existen muchos similares. Analízamos el código y encontramos algo interesante como vemos en la siguiente captura:

HackTheBox machines - Multimaster

 

Encontramos una contraseña de conexión a la base de datos en uno de los ficheros existentes:

Así que volvemos a probar con CrackMapExec el acceso con algún usuario y conseguimos un acceso nuevo con el usuario sbauer:

Probamos el acceso y ya hemos conseguido hacer otro escalado más, cada vez estamos más cerca, pero aún queda mucho trabajo por hacer:

 

Continuando con otro paso de enumeración, revisamos los permisos de este usuario y el mismo dispone de más control sobre el AD así que utilizaremos BloodHound en este caso para recopilar información del active directory.

Nos descargaremos el mismo desde su repo y subiremos el fichero SharpHound.exe a la máquina para recopilar la información:

descargamos los datos y los importamos en BloodHound y descubrimos unos permisos interesantes:

HackTheBox machines - Multimaster

 

El usuario sbauer tiene permisos de GenericWrite sobre el usuario Jorden, que revisando la información obtenida de BloodHound tenemos lo siguiente:

Es decir, tenemos permisos para poder sobreescribir cualquier atributo no protegido del usuario objetivo, así que nos crearemos un fichero .bat para abrir una escucha:

Levantaremos un servidor smb con smbserver:

Y ejecutaremos una serie de comandos para conseguir que se ejecute nuestro fichero .bat con el usuario jorden.

El primer paso permitir la ejecución de powershell:

Añadiremos nuestro script al usuario jorden:

Y modificaremos la cuenta del usuario para evitar que solicite autenticación:

Una vez hecho, enumeraremos con la herramienta GetNPUsers.py de impacket y tendremos el hash del usuario Jorden (no lo vamos a mostrar al completo para evitar que se copie el resultado directamente):

Ahora que tenemos el hash, nos queda romper el mismo utilizando john:

Y tenemos la contraseña:

Probamos el acceso:

Y estamos dentro, bien, ya va quedando menos para root.

Ahora para obtener la flag existen dos posibilidades, una haciendo una copia de la misma a la home del usuario Jorden, y la segunda consiguiendo escalar privilegios a system.

 

Obteniendo la flag de root

Método 1 (copia de ficheros)

Revisando los permisos del usuario Jorden, observamos que podemos ver el contenido de la home del user Administrator, pero no podemos abrir los ficheros existentes, así que utilizaremos robocopy para hacer una copia completa de los mismos y conseguir la flag:

Y conseguimos la flag sin necesidad de escalar a Administrator.

 

Método 2 (escalado a system)

Después de revisar los permisos del usuario observamos que pertenece al grupo:

Revisamos los servicios existentes y observamos uno en concreto del cual podemos abusar mediante la suite de PowerTools.

Abusamos del mismo modificando el comando que ejecutaría por defecto:

Y a pesar de que nos da un acceso denegado, conseguimos añadir nuestro comando.

Ahora procederemos a forzar un arranque del servicio (a pesar de que ya está levantado):

Y conseguimos en nuestra escucha una shell como system y con ello la flag de root:

Y ya tenemos nuestra flag de root para completar esta máquina y conseguir nuestros puntos.

 

Si eres usuario de HackTheBox y te gustó mi writeup, por favor, dame respecto en el siguiente enlace https://www.hackthebox.eu/home/users/profile/103792

 

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *