Whatsapp
Retos (CTF) – DragonJAR Security Conference 2020 – Parte 1

Retos (CTF) – DragonJAR Security Conference 2020 – Parte 1

14 agosto 2020

RETO # 1 – Zona Segura No. 1

Descripción del Reto: ¡Gracias a nuestra área de inteligencia hemos identificado que en nuestras filas teníamos un infiltrado y era el agente Billy ! y por supuesto lo hemos despedido.

Ahora tenemos un gran problema y es que esta persona era la encargada de almacenar información altamente confidencial y lo hacía en un portal web el cual él lo denominaba como la ZonaSegura ya que aseguraba que nadie mas que él podría ingresar a consultar esa información… y por ende necesitamos de tu ayuda para ingresar en el portal y así obtener toda la información… así que tu misión es obtener la clave que nos da acceso a la ZonaSegura y obtener el mensaje de bienvenida.

Nivel de dificultad: Difícil

Puntos asignados: 400

Formato de bandera: SEGTICS{flag}

Archivo adjunto del reto: Aplicativo web en una máquina virtual

Solucionario:

Al ingresar al aplicativo web ZonaSegura se puede observar un input que solicita una clave para validar acceso.

Con lo cual, lo primero que se nos viene a la mente son 2 opciones para resolver este reto:

    • Realizar un ataque de fuerza bruta para identificar dicha clave.
    • Buscar en el código fuente algún tipo de pista y/o información que pueda ayudarnos a dar con la clave que se requiere en el portal.

Al tratar de analizar el aplicativo ejecutando una de las 2 opciones nos llevará a un callejón sin salida!! Es por eso que debemos tener
claros los pasos básicos a seguir cuando de un pentest web se trata, con lo cual debemos de realizar primero una recolección de información y/o enumeración en busca de más archivos y/o
directorios que puedan contener información útil.

Luego de realizar una enumeración de directorios del aplicativo y de validar uno por uno, nos damos cuenta que el directorio “p2pwar/” contiene un archivo javascript llamado “pass.js”

como se logra observar que las líneas se encuentran codificadas, lo cual dificulta su comprensión a simple vista. Gracias a la
experiencia que se tiene en sistemas de codificación y/o lenguajes de programación, hemos detectado que se trata del lenguaje esotérico llamado “malbolge” para lo cual buscamos en internet un intérprete online de malbolge para obtener en texto claro el mensaje.

Como se puede observar la respuesta al ejecutar dicho código nos retorna un mensaje “Esta es la clave: 5421aA25QW95… ”,
ahora que obtenemos la clave solo debemos enviarla para identificarnos en el aplicativo.

Pero al enviarla el aplicativo nos responde con lo siguiente.

Con lo cual nos damos cuenta que algo no está bien y procedemos a validar parte del código fuente.

Rápidamente logramos identificar el input llamado “t0k” de tipo “hidden” (oculto) y éste a su vez tiene un valor asignado por defecto “*-/”, dicho input no está siendo enviado en la petición al momento de querer validar la clave. Se procede a enviar la petición con el parámetro t0k=5421aA25QW95… , para obtener la pista que nos llevará a la flag.

Obtenemos una respuesta diferente y al parecer nos está redireccionando al archivo llamado “V4l1d4d0r_d3_Fl4g.php” y como parametro vía get “r3t0__sluc10n4d0”, con lo cual resolvemos el primer reto, el cual consistía en obtener la clave para identificarnos en el aplicativo y así obtener el mensaje de bienvenida el cual contiene la flag. Utilizando el parámetro V4l1d4d0r_d3_Fl4g.php?r3t0__sluc10n4d0, se obtiene la flag.

Flag: QMISSION{ 5421aA25QW95 …*-/2020 }

RETO # 2 – Zona Segura No. 2

Descripción del reto: Ya que hemos identificado la clave correcta para ingresar a la SecureZone, hemos detectado que el agente Billy implementó validaciones adicionales de identificación ante el portal.

Ahora nos informa que no somos el agente autorizado para acceder a dicha información !! ¿Crees poder averiguar el nombre del agente al que Billy le permitiría dicho acceso ? Trabajaron juntos el proyecto TreadStone en el 2020.

Nivel de dificultad: Medio

Puntos asignados: 250

Formato de bandera: SEGTICS{Apellidoagente/yyyy}

Archivo adjunto del reto: Aplicativo web en una máquina virtual

Solucionario:

Luego de poder identificarnos correctamente en el aplicativo, nos indica que al parecer no somos un agente válido para recuperar la información, con lo cual ya nos puede dar una idea con respecto al valor que debemos modificar en la petición “User-Agent”.

Ahora que hemos modificado el user-agent por un valor random, el aplicativo nos sigue respondiendo de la misma forma, por ende debemos pensar un poco para generar un “User-Agent” válido. Luego de un análisis hemos generado algunas posibles combinaciones que puedan servir para identificar el agente correcto, recuerda «Trabajaron juntos el proyecto TreadStone en el 2020» y el formato de la bandera se compone del apellido de una agente y el año.. Se deduce que el año corresponde al «2020», ahora la sinopsis de esta película involucra al Agente Jason Bourne en el proyecto TreadStone también es considerado una agente renegado y traidor. Posibles combinaciones: Billy/2020 Treadstone/2020 Jason/2020 Bourne/2020.

Luego de intentar uno por uno detectamos que el agente autorizado es “Bourne/2020”, con lo cual logramos resolver el segundo reto.

Flag: SEGTICS { Bourne/2020 }

RETO # 3 – Zona Segura No. 3

Descripción del reto: Cada vez estamos mas cerca de la información a la que necesitamos acceder de manera urgente y todo es gracias a ti !!

Ahora resulta que la ZonaSegura no entiende lo que le decimos … ¿crees poder hacerle entender lo que necesitamos?

Nivel de dificultad: Fácil

Puntos asignados: 50

Formato de bandera: SEGTICS{flag}

Archivo adjunto del reto: Aplicativo web en una máquina virtual

Solucionario:

Luego de haber identificado el agente autorizado para consultar la información del aplicativo, tal parece que dicho aplicativo no entiende lo que le preguntamos o tratamos de consultar.

Si miramos como se componen las peticiones web al servidor podemos identificar un header llamado “Accept-Language” el cual define los lenguajes aceptados por el cliente, para que el servidor sepa cómo responder. Con lo cual basta con probar tipos de lenguaje en el header directamente.

Luego de enviar como valor “es-ES” del header “Accept-Languaje”, identificamos una respuesta distinta del aplicativo, lo cual nos lleva a solucionar el tercer reto.

Flag: SEGTICS {es-ES}

RETO # 4 – Zona Segura No. 4

Descripción del reto: Cada vez estamos mas cerca de la información a la que necesitamos acceder de manera urgente y todo es gracias a ti !!

Nivel de dificultad:Fácil

Puntos asignados: 100

Formato de bandera: SEGTICS{flag}

Archivo adjunto del reto: Aplicativo web en una máquina virtual

Solucionario:

Luego de enviar como valor “es-ES” del header “Accept-Languaje”, identificamos una respuesta distinta del aplicativo, que nos muestra un bandera en texto claro que resuelve el reto de zona segura 4.

Flag: SEGTICS{ w3b_ s3cureZ0n3_2020 }

RETO # 5 – Zona Segura No. 5

Descripción del reto: ¿uh…?

Nivel de dificultad: Medio

Puntos asignados: 250

Formato de bandera: SEGTICS{flag}

Archivo adjunto del reto: Aplicativo web en una máquina virtual

Solucionario:

Ahora que ya hemos obtenido la única información que creíamos almacenaba el aplicativo, todo parece indicar que se existe otro mensaje, pero el aplicativo únicamente nos ha redireccionado un archivo php que al parecer no dice nada.

Si vemos el archivo por encima, todo está en blanco… pero que pasa si miramos el código fuente.

A simple vista parece que se trata del mismo input llamado “t0k”, pero si analizamos bien el código fuente “html” nos indica que tiene 38 líneas escritas !! pero únicamente visualizamos la primera (1). Pero al seleccionar todas las líneas nos encontramos con lo siguiente:

Y de acuerdo con la experiencia que ya obtuvimos con los lenguajes esotéricos, podemos deducir que se trata del lenguaje “whitespace”, para lo cual vamos a buscar un compilador online de “whitespace”.

Al copiar y pegar exactamente todo el código que encontramos en el archivo, logramos obtener el último mensaje que se almacenaba en el aplicativo. Y se obtiene la bandera.

Flag: SEGTICS { Hello  Nerd! }