
Descripción
This lab contains a reflected XSS vulnerability in the search functionality but uses a web application firewall (WAF) to protect against common XSS vectors.
To solve the lab, perform a cross-site scripting attack that bypasses the WAF and calls the print()
function.
Reflected XSS into HTML context with most tags and attributes blocked writeup
Al entrar en ele laboratorio veremos un blog. En la barra de búsqueda, intentaremos emplear un payload común, como el siguiente:
<img src=1 onerror=print()>
Pero la aplicación nos devolverá un error:

Encontraremos la petición en el ‘Logger’:

La enviamos al ‘Intruder’ con Ctrl + I o Click derecho -> Send to Intruder. Allí realizaremos la siguiente configuración:
<§§>

La lista de payloads a probar se ha obtenido de la cross-site cheatsheet de PortSwigger, de ‘Copy tags to clipboard’. Al realizar el ataque y ordenar por código de respuesta ascendente encontraremos que hay una etiqueta que es ignorada por el firewall:

Ahora que sabemos que ‘<body>’ es ignorada, vamos a ver qué eventos podemos usar para llamar a la función ‘print()’. Cambiaremos el ataque de la siguiente forma:
<body%20§§=1>
Borraremos la configuración del payload con ‘clear’ y esta vez usaremos los eventos de ‘Copy events to clipboard’:

Nota: El %20 es un espacio codificado como URL.
De todos los payloads, ‘onresize’ ha respondido con un código 200 (y es el que debemos usar porque la descripción del laboratorio nos dice que el usuario no va a interactuar con la página), por lo que podemos usar un iframe (forzando a la página a hacer el resize a código) para realizar un XSS :

Iremos a ‘Go to exploit server’ y enviaremos en el body el siguiente código:
<iframe src="https://0aa900280432ed8181f2b1ea00b700d9.web-security-academy.net/?search=%22%3E%3Cbody%20onresize=print()%3E" onload=this.style.width='1920px'>
Nota: Pese a que el código sea ‘»><body onresize=print()>’, hay que codificarlo como URL al ser introducido en la búsqueda a través de la URL.
Al pulsar ‘Deliver exploit to victim’ habremos completado el laboratorio:
