Cuando seleccionamos un dominio como objetivo, y en la toma de huellas dactilares encontramos que el aplicación web funciona con java en el backend. Es interesante buscar archivos como struts.xml para agrandar aun mas la superficie de ataque.
Struts es un framework web (MVC) orientado a tecnologías java. En este archivo define algunas configuraciones del sitio. Entre ellas hay una en particular que puede ser de gran utilidad para un atacante. El elemento <action>.
Es un archivo de configuración XML para especificar la relación entre una URL, una clase Java y una página de vista (como index.jsp).
En este caso, solo debemos configurar el parametro alg con el valor none. Luego de esto solo quitamos la parte de la firma, pero conservando el punto final es decir
Original JWT: header.payload.sign
Malicious JWT: header.payload.
El algorirtmo HS256 utiliza la clave secreta para firmar y verificar cada mensaje. El algoritmo RS256 usa la clave privada para firmar el mensaje y usa la clave publica para la verificación.
Este es mi primer CTF de google, me anime a resolver los del 2020 asi que pronto hare el respectivo write-up de los demas. Este reto en particular me gusto mucho porque no solo encontre una vulnerabilidad en la aplicación objetivo, sino tambien en una biblioteca que usa llamada DOMpurify.
Esto no parece seguro. No pondría ni el más mínimo secreto aquí. Mi fuente me dice que es posible que terceros ya lo hayan implantado con sus pequeñas golosinas. ¿Puedes probar que tengo razón?
Enlace al reto: https://pasteurize.web.ctfcompetition.com/