JavaScript Deobfuscation
Overview
En este módulo, aprendí qué es la ofuscación de código y con qué fines se utiliza, así como herramientas para llevarlo a cabo como BeautifyTools o JavaScript Obfuscator Tool.
En primer lugar, se enseña cómo encontrar el código fuente HTML de una página y localizar el código JavaScript. También se explica cómo desofuscar código y analizar su función principal. En el camino vemos un paneo general de solicitudes HTTP para ser capaces de replicar la función del código ofuscado.
Finalmente, se tocan métodos de codificación como base64, hexadecimal y ROT13.
Source Code
Para empezar, desplegamos el target. Abrimos el navegador e indicamos la IP y el puerto por el que corre el servicio web. Esta es la página:

Con Ctrl + U vemos el código fuente; en un comentario se encuentra la flag.
Deobfuscation
En el propio código fuente de la página, podemos ver un archivo secret.js.

Si lo abrimos, veremos código ofuscado. No podemos identificar de primeras qué acciones realiza este código:
Para desofuscarlo, lo pasamos por unPacker.

La función generateSerial está enviando una petición por el método POST a /serial.php, sin tramitar ninguna data.
Ya podemos visualizar la flag.
HTTP Requests
El ejercicio de esta sección consiste en lanzar una petición por POST a /serial.php. Esto lo podemos hacer mediante la herramienta cURL.
La petición nos devuelve una cadena codificada en base64.

Decoding
Decodificamos la cadena que obtuvimos en el ejercicio previo.
Para obtener la flag, tramitamos una petición por POST a /serial.php y enviamos la data que acabamos de decodificar en el parámetro serial.
Skills Assessment
Desplegamos el nuevo target y nos dirigimos a la página web.

Con Ctrl + U analizamos el código fuente. El nombre del archivo JavaScript que se está utilizando es api.min.js.
Hacemos click en el archivo para ver su contenido.

Nos encontramos con código js ofuscado.
Si lo ejecutamos, la cadena que obtenemos es HTB{j4v45cr1p7_3num3r4710n_**_***}.

Desofuscamos el código con unPacker y obtenemos la siguiente flag: HTB{n3v3r_run_0bfu5c473d_*****}.
Tenemos que analizar el código y entender su funcionalidad para poder replicar lo que está haciendo y obtener una clave secreta.
Si observamos el código, veremos que la función apiKeys está tramitando una petición por POST al recurso /keys.php sin enviar ninguna data.
Replicamos esta acción con cURL por consola y obtenemos la clave:
Es una cadena codificada en hexadecimal.

La decodificamos:
Ahora tramitamos una petición por POST a /keys.php e incluimos la cadena ya decodificada en el parámetro key para obtener la flag.
Last updated