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

Descripción del laboratorio DOM XSS

Cuando abrimos el lab, lo primero que nos encontramos es la siguiente web:

Página principal del laboratorio

Hay una barra de búsqueda, por lo que vamos a probar a simplemente buscar algo:

Búsqueda de prueba en la barra de búsqueda

Resultado de búsqueda en el código fuente

Cuando hacemos la búsqueda, si damos click derecho y vemos el código fuente del elemento de la palabra por la que hemos buscado, podremos ver que se sitúa en el atributo src de una imagen.

Observando el como se implementa nuestro input en el código fuente, podemos enviar un payload especializado que se escape del tag <img>.

Por ejemplo, vamos a usar:

  • "><script>alert("XSS")</script>//

Payload XSS en la barra de búsqueda

Cuando hemos escrito nuestro payload, simplemente volvemos a hacer una búsqueda:

Ejecución exitosa del alert

Y como vemos, se nos ejecuta el código que hemos introducido. El código fuente se vería ahora de la siguiente forma:

Código fuente con payload ejecutado

Como vemos, nuestro input ya no se encuentra dentro del <img>, ya que hemos conseguido cerrar el elemento para escribir código JavaScript.

Con esto hecho, conseguimos resolver el laboratorio:

Laboratorio completado exitosamente