En este post vamos a estar resolviendo el laboratorio: “DOM XSS in document.write sink using source location.search inside a select element”.

En este caso, para resolver el reto tenemos que escaparnos del elemento “select” y llamar a la función alert.
Lo primero de todo es acceder al laboratorio:

Una vez hemos accedido, podemos ver varios productos. Vamos a entrar en uno cualquiera:

Cuando entramos, podemos observar una función para comprobar el stock en las distintas ciudades:



Si observamos el código fuente de la web, podemos encontrar el siguiente código:

Analizando un poco el script, básicamente se entiende que además de las tres ciudades por defecto para comprobar el stock, se le puede agregar una más a través de la variable storeId de la URL. Por lo que podemos probar a añadir esa variable y un valor cualquiera:

Una vez accedemos a la web de nuevo pero con la variable storeId, si nos fijamos en las ciudades:

Podemos ver como se ha agregado una más, en concreto una con el nombre del valor que le hemos pasado a la variable.
Si nos vamos de nuevo al código fuente, podemos observar como este parámetro se implementa:

Por lo que, observando esto, podemos intentar poner un valor que ocasione que nos escapemos del propio elemento options, y ejecute un alert:

Al acceder a la web con este valor en la variable:

Se nos ejecuta el alert. En el código fuente, podemos observar lo siguiente:

Y de esta forma, conseguimos resolver el laboratorio:

Recommended Comments