DOM XSS in innerHTML sink using source location.search
Laboratorio de Portswigger sobre XSS
Certificaciones
- eWPT
- eWPTXv2
- OSWE
- BSCP
Descripción
Este laboratorio contiene una vulnerabilidad de XSS basado en DOM en la funcionalidad de búsqueda de blogs. Utiliza una asignación a innerHTML, que cambia el contenido HTML de un elemento div utilizando datos de location.search. Para resolver este laboratorio, debemos realizar un ataque de cross-site scripting que llame a la función alert
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
Intentamos un Html Injection y da resultado <h1>test</h1>
Si nos abrimos el inspector de Chrome y buscamos el payload introducido, vemos que se está empleando innerHTML
innerHTML no soporta etiquetas ni <script></script> ni <svg>, sin embargo, si que acepta imágenes. Por lo tanto podemos elaborar un payload <img src=1 onerror=alert(1)>, el cual si no encuentra el src de la imagen ejecute un error
Otra forma de descubrir la vulnerabilidad sería usando la extensión de navegador DOM Invader de Burpsuite
Copiamos el payload yktch9zq y lo copiamos donde deseemos testear un XSS
Una vez ejecutado el payload si nos vamos al DOM Invader, vemos que nos identifica una función peligrosa, a esto lo llamamos sink
Si pulsamos sobre Exploit nos generará un payload para explotar la vulnerabilidad
Si queremos ver el payload enviado nos dirigimos a Burpsuite > Proxy > HTTP history









