Skip to main content
HackTheBox machines – Intuition WriteUp

HackTheBox machines – Intuition WriteUp

Intuition es una de las maquinas existentes actualmente en la plataforma de hacking HackTheBox basada en Linux

Intuition es una de las maquinas existentes actualmente en la plataforma de hacking HackTheBox y es de dificultad Difícil.

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

 

Escaneo de puertos

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

Detectados los puertos abiertos, analizamos más en detalle los mismos

 

Enumeración

En el escaneo encontramos otro dominio, comprezzor.htb, así que lo añadimos al fichero hosts y accedemos al portal web

HackTheBox machines – Intuition WriteUp

 

No parece haber gran cosa en esta web así que vamos a enumerar subdominios

Y encontramos 3, auth, report y dashboard que añadiremos al fichero hosts.

 

Accedemos a la web de auth, donde encontramos el siguiente formulario de login, aunque por el momento, carecemos de credenciales

HackTheBox machines – Intuition WriteUp

 

Continuamos revisando el resto y nos fijamos en la web de report

HackTheBox machines – Intuition WriteUp

 

Vemos una página para el reporte de bugs, pero para ello necesitaremos una cuenta, así que volvemos a la página de auth a registrarnos y poder enviar un bug al portal.

Antes de ello revisamos en detalle las secciones, y nos fijamos en la página de about de report

Revisión del about de los reports

 

En la misma dice que los report son revisados por sus desarrolladores, lo que puede indicar que igual hay alguna forma de obtener los datos de algún usuario cuando este revise nuestro report, así que vamos a enviar uno.

Envío de un reporte

 

Hacemos varias pruebas en este formulario y conseguimos explotar una vulnerabilidad de XSS con el siguiente payload

Y obtener la cookie del usuario en nuestra escucha

Y gracias a la cual accederemos a la web de dashboard

Primer acceso al dashboard

 

Revisamos en detalle esta sección y observamos que el usuario puede establecer la prioridad de los report, siendo esta 0 baja y 1 alta, así que vamos a modificar la prioridad de un report como alta con el objetivo de que sea el admin quien lo revise

Estableciendo la prioridad

 

Y mediante el mismo método utilizado anteriormente, obtener la cookie del usuario admin

 

Una vez la tenemos, accedemos con la cookie de admin a la app del dashboard

Acceso como admin al dashboard

 

Revisando el panel vemos una sección para generar un pdf en base a un report

Utilizando la conversión a pdf

 

Así que generamos un report cualquier y descargamos el fichero para revisar la aplicación que lo genera

Una vez que conocemos la aplicación y su versión nos vamos a google y encontramos una vulnerabilidad de LFI bajo el CVE-2023-24329 y un issue en github donde se expone el fallo y como verificarlo.

Así que siguiendo los ejemplos añadimos el carácter espacio seguido del siguiente payload

Explotando así el lfi y consiguiendo el fichero passwd

LFI explotado

 

No vemos usuarios potenciales así que revisamos el proceso en sí

Y nos muestra el siguiente fichero

Que descargamos con el payload

Y cuyo contenido es el siguiente

En el código anterior vemos la llamada a varias librerías, así que descargamos las mismas y encontramos en el fichero de dashboard unas credenciales de ftp

al cual nos conectaremos con el siguiente payload

viendo 3 ficheros

Continuamos con el LFI

 

Revisamos los mismos y tenemos una clave en el fichero welcome_note.txt

Credenciales a través de LFI

 

y una clave ssh que no sabemos a que usuario pertenece, así que vamos a eliminar la password de la key

y en la misma hay un comentario con el usuario al cual pertenece la clave, y con el cual conectaremos por ssh

 

Obteniendo la flag de user

Una vez dentro, vamos a coger la primera flag

 

Escalado al usuario lopez

Revisamos los puertos abiertos en el servidor y vemos alguno interesante, aunque por el momento nada útil

 

Revisamos en la máquina y encontramos el fichero de sqlite utilizado por la aplicación, así que consultamos la ddbb y obtenemos los hashes de varios usuarios

Y conseguimos la password del usuario adam con hashcat

 

Las credenciales sólo nos valen para el servicio de ftp, así que conectaremos al mismo y obtendremos un script en bash, otro en c, y un binario

 

Y el contenido de los mismos sería el siguiente:

para el fichero run-tests.sh

Y el fichero runner1.c

 

Si nos fijamos tenemos una contraseña incompleta en el fichero bash

y un md5 en el fichero c

así que hacemos un pequeño script para calcular la password

y ejecutamos para obtener la misma

 

Continuamos con nuestro análisis y encontramos la aplicación runner en la ruta /opt

Nada útil por el momento en este punto así que seguimos buscando y encontramos una password en los logs de suricata

Con la cual escalamos al usuario lopez

 

Escalado a root

Hemos dado otro pasito más, así que vamos a ver que permisos tiene este usuario, y vemos que puede ejecutar la app de runner2 que vimos antes

El cual vemos que es un fichero elf

Y al ejecutar el mismo nos muestra la ayuda del binario

En el código en c que vimos antes, observamos que utilizaba playbooks de ansible, así que vamos a tratar de tirar por ahí.

 

Revisando la documentación vemos que podemos crear ficheros json con la siguiente estructura

por lo que generamos uno con los datos conocidos hasta el momento

y vemos que funciona

por lo que tratamos de obtener una shell

aunque en este caso no lo conseguimos

por lo que consultamos la documentación de ansible y vemos que para la instalación de un playbook utiliza un fichero tar.gz

 

Siguiendo la docu vamos a revisar en primer lugar los roles disponibles

y encontramos que en los paths habilitados está la home del usuario lopez, así que siguiendo esta plantilla de github y una vez comprendida, generamos un fichero json que llame al fichero tar.gz seguido del binario de bash, con la idea de escalar a root de esta forma.

Generamos nuestro fichero json

y creamos el fichero con el nombre que habíamos declarado

ejecutamos, y a pesar de los errores que nos devuelve, conseguimos escalar a root

 

Obteniendo la flag de root

Por lo que siendo ya root vamos a por la flag

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 respeto en el siguiente enlace

 

Deja una respuesta

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