domingo, 11 de abril de 2021

Web - MoonCTF 2021

 ¡Hola a todos! Después de tantos meses sin escribir os traigo el apartado web de MoonCTF el cual fue este fin de semana y que fue organizado por FlagHunters.


Vamos a resolver todos los retos de la categoría web, el apartado que realicé completamente.

РОБОТ (50 puntos)

 Al abrir este primer reto nos encontramos con lo siguiente:


Al ser el primer reto, supuse que sería el más fácil y fui directamente a mirar en robots.txt por si habían dejado algo. 



Visitando esta ruta nos descarga un archivo, al mirar su contenido, hemos resuelto el reto.



Jagger-Whisky-Tequila (100 puntos)

Este reto supe de qué se trataba antes de abrirlo ya que por los guiones imaginé que querían dejar una pista y que las siglas de este reto serían JWT, usadas también en JSON Web Tokens, una forma de usar tokens que nunca había usado pero que había leído alguna vez que existía por algún sitio.


Al abrir el reto vemos que nos exponen tres botellas.



Si probamos a darle a comprar, vemos que no tenemos permiso.



Vamos a inspeccionar las cookies.



El formato de esta cookie se corresponde a a un JWT. Este formato está formado por tres campos separados por un punto entre sí. El primer campo es la cabecera con el algoritmo y el tipo de token, el payload con los datos que se quieren almacenar y por último la firma que sirve de verificación.



Aquí vemos el token que nos ha asignado la web con sus distintas partes. Necesitamos modificar la edad y que la firma sea correcta. Para ello, necesitamos la contraseña del token. La obtendremos haciendo fuerza bruta al token original.



Ahora modificamos la edad y añadimos la contraseña.



Este JWT lo tomará como válido así que modificamos la cookie y pulsamos el botón de comprar.



¡Y listo!


Es posible realizar este reto de otra manera, y es modificando el tipo de algoritmo a "none". La web no realiza la comprobación de que esté usando algún algoritmo válido así que nos sirve para bypassear este filtro.



Vamos a realizar los dos cambios y rearmamos el token:



Y así hemos evitado modificar la firma.



The Matrix has you ... (100 puntos)

Este reto es bastante más sencillo que el anterior, al abrir la web veremos un script que se ejecuta con temática de Matrix. 



Si revisamos el html vemos qué se está ejecutando:



Si miramos en la parte inferior del script veremos la flag.


 

РОБОТ 2 (200 puntos)

Al abrir la continuación de este reto vemos una web estática sobre robots.



Vamos a volver a revisar el archivo robots.txt por si hay alguna indicación.



Según lo que dice aquí, si tenemos un User-Agent "customUA" podremos acceder a  la flag así que vamos a burp para realizar la petición:



Y así obtenemos la flag. En el caso de hacer la petición sin modificar el User-Agent, nos veremos redireccionados a otro recurso, una flag falsa.



Jagger-Whisky-Tequila II (300 puntos)

Al entrar a la continuación de este reto, volvemos a encontrarnos la misma página aparentemente.


Si probamos a darle a comprar, ocurrirá lo mismo que en su versión anterior.

Ahora vamos a revisar el html de la página.



Como nos indican que han generado una llave privada, vamos a intentar visualizarla.



Vamos a volver a jwt.io para modificar de nuevo la cookie que tenemos. 


 

Modificamos el tipo de algoritmo a RS256.



Como hemos visto, necesitamos una clave pública que no tenemos. Vamos a generarla.



Ahora podemos generar un nuevo token con la edad modificada.


Sólo tenemos que modificar nuestra cookie actual por esta e intentar realizar la compra:



¡Y con esto hemos completado los retos de web enteros!


Muchas gracias a flagHunters por preparar este CTF, desde aquí se lo agradezco a ellos y a todos vosotros por leerme una vez más. ¡Hasta la próxima!

No hay comentarios:

Publicar un comentario