Reflected DOM XSS – PortSwigger Write Up
En este post vamos a estar resolviendo el laboratorio de PortSwigger: “Reflected DOM XSS.”
En este caso se nos indica que el servidor procesa los datos de una petición y lo muestra los datos de la respuesta. Posteriormente, un script de la página procesa los datos reflejados de una forma insegura. Para resolver el laboratorio debemos de ejecutar la función alert
.
Dicho esto, lo primero de todo es acceder al laboratorio:
Una vez accedidos, podemos observar un formulario que nos permite buscar en el blog. Para analizar mejor el comportamiento de esta funcionalidad, abrimos el burp suite y activamos el proxy en el navegador:
Con esto hecho, probamos a hacer cualquier búsqueda:
Cuando damos a “Buscar”, se genera la petición que podemos observar arriba. No hay mucha información, además de que en el enunciado nos hacen el spoiler de que la vulnerabilidad está en un script inseguro, por lo que podemos suponer que la primera petición de búsqueda no tiene mucha historia, por lo que simplemente la enviamos.
Cuando enviamos la primera petición de búsqueda, si mantenemos el intercept
del burp suite puesto, interceptaremos la siguiente petición:
Esta tiene pinta que ha sido generada por el frontend del recurso que se solicitó en la primera petición (/?search=test)
. Para analizar mejor su respuesta, la pasamos al repeater:
El servidor nos devuelve una respuesta en formato JSON, donde en la parte inferior podemos observar el término de búsqueda que hemos colocado.
Podemos probar a intentar escaparnos del contexto del JSON en este caso, por ejemplo, a intentar meter un alert
:
En la respuesta podemos observar como en principio parece que sin problemas podemos inyectar y escaparnos del JSON, ya que no hay ningun tipo de sanitización, por lo que, usando el payload de arriba, lo colocamos en la petición que dejamos en el proxy, y lo enviamos:
De esta manera, conseguimos obtener un XSS y resolver el laboratorio:
¡Un saludo y espero que os sirva de apoyo!