Reflected XSS into a JavaScript string with angle brackets and double quotes HTML-encoded and single quotes escaped
Laboratorio de Portswigger sobre XSS
Certificaciones
- eWPT
- eWPTXv2
- OSWE
- BSCP
Descripción
Este laboratorio contiene una vulnerabilidad XSS reflejada en la funcionalidad de seguimiento de la consulta de búsqueda, donde los corchetes angulares y las comillas dobles están codificados en HTML y las comillas simples están escapadas. Para resolver este laboratorio, debemos realizar un ataque XSS que rompa la cadena de JavaScript y llame a la función alert(). Debido a las restricciones de codificación, necesitaremos encontrar una forma de escapar correctamente de la cadena y ejecutar el código malicioso aprovechando las vulnerabilidades en la manipulación del input
Guía de XSS
Antes de completar este laboratorio es recomendable leerse esta guía de XSS https://justice-reaper.github.io/posts/XSS-Guide/
Resolución
Al acceder a la web nos sale esto
Introducimos contenido en el cuadro de búsqueda
Observamos el código fuente y vemos que nuestro payload aparece entre comillas simples
Si intentamos usar el payload ' testing nos escapa la comilla simple
Si probamos este payload \' testing conseguimos escapar la \ que nos escapa la '
Una vez hemos escapado del string, podemos usar este otro payload \'-alert(3);//. Con la \ escapamos la \ que usa la web para escapar nuestra ', haciendo que sí sea interpretada. El - sirve para concatenar texto en cadenas de texto, es parecido al +, pero se prefiere usar el - porque no se urlencodea. Con // comentamos el resto de la línea para evitar errores y asegurar que se ejecute el alert(3) correctamente. Este tipo de técnica nos permite ejecutar código JavaScript a pesar de las restricciones impuestas en la entrada de datos







