Skip to main content
HackTheBox machines – Intentions WriteUp

HackTheBox machines – Intentions WriteUp

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

Intentions 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 Intentions 10.129.18.139 a /etc/hosts como intentions.htb y comenzamos con el escaneo de puertos nmap.

 

Lanzado el primer escaneo rápido, lanzamos un segundo más completo de los puertos descubiertos

 

Enumeración

Accedemos al portal web y vemos una página de login

HackTheBox machines – Intentions WriteUp

Nos creamos una cuenta y accedemos al portal, visualizando una galería de imágenes

HackTheBox machines – Intentions WriteUp

 

Realizamos algunas pruebas y observamos en las cookies que utiliza tokens jwt para la autenticación

Revisando cookies

 

Revisamos el contenido del token y vemos que utiliza una api para loguearse en el portal

Analizando el token JWT

 

Realizamos más pruebas sobre el portal y observamos una cosa curiosa, los géneros que indicamos en la configuración de nuestro perfil son los que aparecen en la sección de feeds

Modificando el perfil de usuario

 

Explotando un SQLi

Seguimos probando cosas y vemos que esta parte de la aplicación es vulnerable a SQLi por lo que vamos a ver que podemos sacar con ello.

Utilizaremos sqlmap para facilitarnos el ataque, pero antes necesitaremos guardar a fichero dos peticiones:

  • Una con la petición POST de la actualización de los géneros favoritos en el perfil
  • La segunda con una petición GET a la página de feeds

 

Una vez tenemos las dos lanzamos el ataque, en primer lugar para sacar los esquemas de base de datos

 

Tenemos dos esquemas, así que lo siguiente será sacar las tablas del esquema intentions

 

Después sacamos las columnas de la tabla users

 

Y por último los usuarios, aunque en este caso y para no ralentizar demasiado, sacamos sólo aquellos usuarios cuyo campo admin sea igual a 1

 

Accediendo al panel de administrador

Tenemos un hash, aunque tenemos las manos atadas todavía, por lo que seguimos enumerando el portal y encontramos un fichero javascript interesante en la ruta /js/admin.js, en el cual destacamos la siguiente parte

Fichero javascript interesantes

 

Por lo que vemos en el fichero hay una versión 2 de la api, en la cual es posible loguearse mediante el hash del usuario en lugar de utilizar una password.

Visto esto, volvemos a la pantalla de login e interceptamos la petición con burp y haremos dos cambios

  • Cambiar la versión de la api de 1 a 2
  • Cambiar el parámetro password por hash

 

Cambios realizados enviamos la petición

Interceptando con burp

 

Y si nos fijamos veremos que estamos dentro del portal con el usuario steve

Escalado al usuario steve

 

El siguiente paso será acceder al panel de administrador

Revisión del portal de admin

 

 

Donde vemos más información de la versión 2 de la API, y si nos vamos a la sección de imágenes veremos una galería de nuevo, pero en este caso podemo editar las imágenes existentes con diferentes filtros fotográficos

Galería de imágenes del admin

 

Revisamos a fondo esta parte y después de algunas pruebas buscamos en google y encontramos un post donde indica como realizar una explotación arbitraria en el momento de instanciar un objecto.

Nos fijaremos en la parte que explica como realizar un ataque RCE mediante un crasheo de PHP y un ataque de fuerza bruta, y una vez probado trataremos de llevarlo más allá.

Crearemos en primer lugar, y siguiendo el ejemplo, una imagen maliciosa

 

Una vez creada, y para facilitarnos el trabajo, escribimos un pequeño script que nos ayude en la tarea

 

Una vez hecho levantamos un servidor en python para servir la imagen y ejecutamos nuestro script

 

Y estamos dentro con el usuario www-data.

 

Escalado al usuario greg

Ahora que ya estamos dentro enumeramos la misma y encontramos un directorio .git en la raíz del portal web

 

Ya que no podemos acceder al mismo a través del navegador, generamos un fichero tar con su contenido

Y nos descargamos el mismo para su análisis.

Revisamos los cambios realizados

 

Y encontramos unas credenciales en uno de los commit

 

Obteniendo la flag de user

Con las credenciales en mano, accedemos por ssh con el usuario greg y cogemos la primera flag

 

Escalado de privilegios

Revisando los grupos del usuario, vemos que el mismo pertenece al grupo scanner, y revisando la máquina encontramos un ejecutable en la ruta /opt/scanner

Que se trata de un fichero ELF

Si revisamos las capabilities del mismo

Dispone de la capability cap_dac_read_search la cual permite leer cualquier fichero del sistema independientemente de los permisos de este, así que para intentar descubrir como podemos aprovecharlo, vamos a revisar la ayuda del binario

 

Revisando el mismo, al utilizar el parámetro -c el binario calcula el hash de un fichero y lo compara con el obtenido del parámetro -s, además podemos utilizar el parámetro -p para debug, lo que nos ayudará a obtener más información del proceso.

Vamos a generar un hash aleatorio en nuestro kali y lanzamos una primera prueba

El hash no coincide, pero nos vale para verificar si el fichero realmente existe en el servidor, vamos a tratar de obtener la clave ssh de root

Y vemos que existe, mientras que si lanzamos contra otro fichero que no está muestra un error de ello

 

Otra opción interesante sería el parámetro -l, el cual nos permite indicar el número máximo de bytes a comprobar, y utilizando esta opción podríamos hashear un fichero empezando con 1 byte e ir añadiendo más de forma progresiva hasta obtener el fichero completo por medio de fuerza bruta.

Dicho esto hacemos un pequeño script en python que nos ayude a conseguirlo

 

Ejecutamos el mismo y conseguiremos la clave ssh de root

 

Obteniendo la flag de root

Y ahora que tenemos la clave, accedemos por ssh y conseguimos 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 *