Skip to main content
HackTheBox machines – Unicode WriteUp

HackTheBox machines – Unicode WriteUp

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

Unicode 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 Unicode 10.10.11.126 a /etc/hosts como unicode.htb y comenzamos con el escaneo de puertos nmap.

Bueno para variar en esta máquina también tenemos así de primeras el puerto 80 así que vamos a ver que web tenemos.

 

Enumeración

Revisamos el portal web cuyo aspecto es el siguiente

 

Se trata de un portal web muy simple, el cual dispone de una página de login y otra de registro, así que nos creamos una cuenta y accedemos para llegar a la siguiente pantalla

 

En este caso si que vemos alguna cosa más pero tampoco nada útil. Vemos una página de subida de ficheros pero que no nos da nada relevante así que analizamos un poco más en detalle y nos fijamos sobre todo en las cookies, donde vemos la autenticación utilizada

 

La autenticación se realiza por medio de tokens jwt así que nos vamos a la web de jwt.io para verificar el contenido del mismo y vemos lo siguiente

 

Vemos un nuevo dominio a añadir, hackmedia.htb, el algoritmo utilizado, el usuario y el jku el cual recoge un fichero json de una url que utilizará para verificar el token y cuyo contenido es el siguiente

 

Buscamos en google un poco más en detalle como funciona este tipo de autenticación, y para poder hacer el bypass y acceder con el usuario admin vamos a necesitar, en primer lugar, generar unas claves público/privada que podemos hacerlo en el portal mkjwk al igual que se ve en la siguiente imagen

 

Y ahora que ya tenemos las credenciales tenemos todo lo necesario para modificar el token, así que tendremos que editar los siguientes campos de nuestro jwt:

  • jku -> para que apunte al fichero que generemos con nuestras claves. Para ello utilizaremos la url vista al principio que hacía una redirección a google.
  • user -> lo cambiaremos por el usuario admin
  • public and private keys -> añadiremos las nuestras

 

Así que una vez aclarados los siguientes pasos editamos el token

 

Añadiremos nuestras claves generadas en el fichero json quedando así

Y levantaremos un servidor web con python en la ruta donde tengamos el fichero

 

Y cambiaremos el valor de la cookie en nuestro navegador o con la ayuda de burp para obtener acceso al panel de administración

 

Revisamos el portal y sólo vemos una cosa interesante en los enlaces de Current month Last quarter donde cargan un fichero externo con una url del tipo siguiente

Vista la forma, probamos a realizar un lfi para conseguir un fichero interno del servidor pero parece que no conseguimos nada de la forma convencional, así que viendo el título de la máquina vamos a probar a hacerlo en formato unicode y así conseguimos que funcione

Ahora para poder continuar hacemos fuerza bruta a ver si podemos obtener algún fichero interesante, para ello podemos utilizar ffuf como vemos en este ejemplo

Y después de varias enumeraciones obtenemos un fichero bastante útil de la configuración de nginx

El cual nos da información de un posible fichero de credenciales, db.yaml, y la ruta donde se encuentra la aplicación, /home/code/coder así que vamos a tratar de obtener el mismo

Y conseguimos unas credenciales de mysql.

 

Obteniendo la flag de user

Utilizando las credenciales anteriores, conseguimos acceder por ssh con el usuario code y la primera flag

 

Escalado de privilegios

Ahora que ya estamos dentro, revisamos si el usuario tiene permisos de sudo

Y vemos que tiene permisos para ejecutar como sudo un fichero ejecutable

Ejecutamos y probamos el mismo forzando el fallo y descubrimos que está compilado con python

Así que vamos a utilizar la herramienta pyinstxtractor para extraer el contenido del mismo

 

Vale, otra cosa conseguida, aunque parece que todavía no podemos verlo en detalle ya que ha extraido ficheros compilados por python por lo que vamos a utilizar la herrameinta pycdc que deberemos compilar previamente.

Así que nos descargamos la misma de github y la compilamos

 

Y ahora que ya lo tenemos lo extraemos

 

En el anterior código vemos la validación que hace para la descarga de ficheros por lo que puede ser un punto explotable.

 

Obteniendo la flag de root

Llegados a este punto, y conocido el código de la aplicación podemos obtener la flag de root por dos métodos.

Pasando un parámetro de curl vacío para saltar el primer paso e ir directamente al fichero

O descargando el fichero y leyendolo como si fuese un report

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 *