Skip to main content
HackTheBox machines – Clicker WriteUp

HackTheBox machines – Clicker WriteUp

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

Clicker es una de las maquinas existentes actualmente en la plataforma de hacking HackTheBox y es de dificultad Media.

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 Clicker 10.129.128.183 a /etc/hosts como clicker.htb y comenzamos con el escaneo de puertos nmap.

Lanzado el primer escaneo vamos con uno más detallado sobre los puertos abiertos

 

Enumeración

Revisaremos en primer lugar la aplicación web en el puerto 80 donde vemos la siguiente página web

HackTheBox machines – Clicker WriteUp

 

Navegamos un poco por la página y nos creamos una cuenta y accedemos

HackTheBox machines – Clicker WriteUp

 

Revisamos el portal y vemos un juego de hacer clicks para ganar puntos e ir subiendo de nivel

Revisando el juego

 

Parece que necesitamos más información para poder continuar así que siguiendo con la revisión vamos a ver si hay algo en el puerto 2049 que corresponde al servicio de NFS y vemos un punto de montaje

Creamos una carpeta y montamos

Y revisamos su contenido donde vemos un fichero .zip con un backup de la aplicación

Copiamos a nuestro sistema el fichero y descomprimimos

 

Revisamos el código a conciencia y vemos varias cosas interesantes.

Empezaremos con el fichero authenticate.php donde vemos los parámetros utilizados durante el proceso de autenticación

 

Nos vamos a centrar en como trabaja con el rol del usuario, así que siguiendo la búsqueda, vemos en el fichero admin.php que carga la variable para verificar el rol del usuario

 

En el fichero diagnostic.php realiza otra validación, en este caso con un token que no hemos sido capaces de descifrar

 

Revisando el fichero save_game.php comprueba la clave y el valor de la variable role para tratar de prevenir su modificación

 

Y durante ese proceso llama a la función save_profile del fichero db_utils.php para guardar los datos del usuario

 

Como última observación, vemos en el fichero export.php que si la extensión del fichero no es txt ni json pinta los datos sin sanitizar

 

Vista toda esta parte llegamos a la conclusión de que tenemos que realizar los siguientes pasos:

  1. Interceptar la petición de guardado de juego para modificar el rol por el de admin
  2. Explotar el RCE a través del parámetro nickname
  3. Exportar el resultado para poder ejecutar nuestro código

 

Así que vistos los pasos, en primer lugar modificaremos el rol del usuario y para ello interceptamos la petición de guardado del juego con burp y añadiremos el valor

en hexadecimal

Interceptando la petición para modificar el rol

 

Ahora cerramos la sesión y entramos de nuevo para ver que tenemos permisos de admin

HackTheBox machines – Clicker WriteUp

 

Una vez logueados con rol de admin interceptamos otra petición de guardado del juego y modificaremos el nickname enviando el siguiente payload en hexadecimal

Modificando el nickname

 

Una vez modificado el nickname lanzamos la petición para exportar los datos

Exportando los datos

 

Y si accedemos al fichero y le pasamos un comando vemos que ha funcionado

Verificando el RCE

 

El siguiente paso será obtener una revshell, así que generamos un fichero con el siguiente contenido

Enviamos la petición para que descargue el fichero de nuestro kali

Y obtenemos una shell con www-data

 

Escalado al usuario jack

Una vez dentro, enumeramos ficheros con permisos de suid

 

Y vemos uno fuera de lo común llamado execute_query

Que se trata de un fichero ELF

Si vamos a la ruta del binario vemos también un fichero readme

Cuyo contenido es

Así que hacemos alguna prueba con las diferentes opciones para ver su funcionamiento

 

Siguiendo con el análisis vemos en los strings una parte interesante

 

Y si lo pasamos a una línea

 

Por lo que podemos ver hay un método en el cual le podemos pasar un fichero, y el binario parte su ejecución de la ruta /home/jack/queri así que hacemos más pruebas y descubrimos un método que no aparecía en el fichero readme, con identificador 5, y el encargado de leer ese fichero

Así que vamos a ver si por casualidad está la clave privada del usuario en su home y la obtenemos

 

Obteniendo la flag de user

Con la clave accedemos por ssh y cogemos la flag

 

Escalado de privilegios

Para el escalado a root revisamos si el usuario tiene algún privilegio

Y vemos que puede ejecutar como root el siguiente script

 

Revisando el código no podemos aprovecharnos del path ni de las variables utilizadas ya que hace un unset de las mismas pero podemos tratar de cargarlas antes para saltar la restricción.

Buscando en google encontramos un post donde explica como saltar la restricción con variables de entorno.

Así que lo probamos para verificar que estamos ejecutando con el usuario root

Damos permisos de suid al binario de bash

Revisamos

Y escalamos a root

 

Obteniendo la flag de root

Una vez que tenemos permisos de root sólo nos queda obtener 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 *