Reflected DOM XSS – PortSwigger Write Up

En este post vamos a estar resolviendo el laboratorio: “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:

2 comentarios en “Reflected DOM XSS – PortSwigger Write Up

  1. Muy buenas, porque a la hora de poner en el input del buscador test\»-alert()}//, ¿por qué el «-» antes del alert(), qué función tiene?

Deja una respuesta

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Subir para arriba