En este post vamos a estar resolviendo el laboratorio: “Reflected XSS into attribute with angle brackets HTML-encoded”.

Pantalla de inicio del laboratorio Reflected XSS into attribute

En este caso, para resolver el reto tenemos que inyectar un atributo que nos ejecute un alert.

Lo primero de todo es acceder al laboratorio:

Página principal del laboratorio con barra de búsqueda

Una vez accedemos, nos encontramos ante una barra de búsqueda, por lo que vamos a usarla buscando una palabra aleatoria:

Formulario de búsqueda con término de prueba

Resultados de búsqueda mostrando parámetro en URL

Cuando buscamos, si nos fijamos aquí ocurren varias cosas:

  1. En este caso no hay resultados, pero eso es lo de menos.
  2. En la URL se nos añade el parámetro search.
  3. Lo que buscamos, acaba siendo el valor del atributo value en el elemento input.

Teniendo en cuenta los dos últimos puntos, podemos crear un payload que nos cree un nuevo atributo dentro del elemento input para que se nos ejecute un alert. En este caso el payload es:

  • "onmousemove="alert(1)

Payload XSS inyectado en el parámetro de búsqueda

De esta forma, buscando por el payload que hemos especificado arriba, conseguimos resolver el laboratorio:

Página de resultados sin ejecución visible del alert

Parece que no ha ocurrido nada a nivel de ejecutar el alert, sin embargo, si pasamos el ratón por encima de la palabra:

Ejecución exitosa del alert al mover el ratón sobre el campo

Se nos ejecuta. De esta forma conseguimos resolver el laboratorio:

Confirmación final de éxito del laboratorio