Hack the box es una de las mejores plataformas para practicar tus conocimientos de pentesting con un nivel de dificultad mas alto que el promedio de plataformas en internet. Incluso para poder registrarte en Hack The Box, es necesario hackear sus sistema de generacion de codigos de registro y eso es lo que vamos a hacer a continuacion.
Paso 1:
Entramos a Hack the box e intentamos registrarnos. Esto nos llevará a una seccion de la web que nos indicara que nececitamos de un codigo de invitacion para poder registrarnos en dicha plataforma, de igual forma nos indica que somos libres de hackear el sistema para registrarnos.
El primer punto recomendado al analizar una aplicacion web es ver el codigo fuente del front-end de los archivos que se cargan con la pagina. Asi que dare click derecho y click en inspeccionar elemento
Al dar click en inspeccionar elemento, nos muestra una imagen creada a partir de “ASCII ART” el cual se muestra en la pestaña de “Console”.
Esta imagen nos indica con un texto en la parte superior que dice «La primera parte del reto» y en la parte inferior un texto que dice «Esta pagina carga un archivo javascript interesante. Mira si puedes encontrarlo :)». Y asi es como llegamos al siguiente paso
Paso 2:
Nos dirigimos a la pestaña de “Sources”
En esta pestaña podemos encontrar una lista de los archivos que fueron cargados con el sitio web y entre ellos se encuentra uno muy interesante llamado «inviteapi.min.js».
Es posible visualizar el codigo del archivo al dar click en el y eso es lo que haremos
En el codigo podemos observar que se encuentra un comentario que dice lo siguiente: «Este codigo javascript se mira extraño… ¿Esta ofuscado?». Este es un Hint que nos indica que debemos de ver el codigo el cual al parecer esta comprimido en una sola linea y ademas esta ofuscado, es decir oculto a simple vista para confundirnos.
Paso 3:
Lo que debemos hacer ahora es utilizar alguna herramienta para quitarle lo ofuscado al codigo y ademas descomprimirlo a una version que sea mas comprensible y para ello vamos a entrar al sitio web beautifier.io
Ingresamos el codigo ofuscado de hackthebox en el formulario de beautifier.io y damos click en «Beautify Code». Esto nos permitira ver una version legible del codigo.
Ahora el codigo es legible y basicamente lo que dice es que se crea una funcion llamada makeInviteCode(), la cual ejecutara una peticion POST por medio de AJAX con el formato de datos JSON, hacia la URL /api/invite/how/to/generate y al hacer esta peticion habra una respuestas del servidor con informacion que nos puede servir.
Paso 4:
A continuacion ejecutaremos dicha funcion desde la consola.
La ejecucion de la funcion makeInviteCode(); retorno un valor extraño en la variable data y retorno el valor «BASE64» en la variable «enctype:». Es decir que la variable data contiene la informacion y la variable enctype nos indica que ese valor esta codificado en BASE64.
Ahora que sabemos que el formato del data es Base64, podemos decodificarlo a traves de base64decode.org o bien a traves de la funcion atob en la consola de javascript como se muestra a continuacion
El resultado de la decodificacion nos muestra un texto que nos dice que hagamos una peticion POST a la ruta /api/invite/generate/, justo como lo hace la funcion makeInviteCode(); pero ahora en otra ruta. Asi que sera necesario copiar la funcion de makeInviteCode(); y cambiar solamente la ruta existente a la ruta nueva.
En la imagen de arriba podemos ver que es una copia de la funcion makeInviteCode(), solo que hay dos cambios en ella. El primero es el nombre y el segundo es la ruta. El nombre fue cambiado para no remplazar la funcion inicial y la ruta fue cambiada para cumplir con la solicitud que nos indico el sistema hacia la ruta /api/invite/generate.
Al crear la nueva funcion, tambien la ejecutamos y esta retorna un valor en formato JSON con la variable code la cual nos brinda un texto codificado y nos dice a traves de la variable format, que el codigo esta codificado.
A simple vista podemos saber que la codificacion es Base64 por que termina con el simbolo «=». Asi que lo decodificamos y obtenemos nuestro codigo de registro.
Base64 no siempre termina con el simbolo igual, esto se explica en el siguiente articulo: ¿Por que Base64 termina con uno o dos simbolos de igual (=)?
Paso 5:
Tomamos el codigo de registro y nos registramos 🙂
Felicidades.