DOM Based Vulnerabilities Lab 1
Skills
- DOM XSS using web messages
Certificaciones
- eWPT
- eWPTXv2
- OSWE
- BSCP
Descripción
Este laboratorio
tiene una vulnerabilidad
en los mensajes web
. Para resolver
el laboratorio
, debemos usar el servidor de exploits
para publicar
un mensaje
en el sitio objetivo que haga que se llame a la función print()
Resolución
Al acceder
a la web
nos sale esto
Me llama la atención la carga
del objeto
, si inspeccionamos
el código fuente
vemos que la ventana
tiene un listener
y si enviamos
un mensaje
este se mostrará
en la web
Para enviar
un mensaje
podemos usar window.postMessage
https://developer.mozilla.org/es/docs/Web/API/Window/postMessage , que se utiliza para facilitar la comunicación segura entre diferentes ventanas, pestañas o iframes
en un navegador web
. Esto es especialmente útil
en situaciones
donde se necesitan pasar datos entre orígenes diferentes o entre diferentes partes de una aplicación web que están ejecutándose en contextos aislados
. Mediante un iframe
podemos mandar
un mensaje
que tenga como receptor cualquier destino
usando *
1
<iframe width="1000" height="1000" src="https://0a8100d7033f38d380a3768b003c00d1.web-security-academy.net/" onload="this.contentWindow.postMessage('Hola desde la ventana principal','*')">
Si insertarmos
el payload
en el exploit server
y pulsamos sobre View exploit
se nos carga
un iframe
con el mensaje
que hemos enviado
Se usa innerHTML
, lo cual permite obtener
o establecer
el contenido HTML
de un elemento
, esta propiedad interpreta
y procesa cualquier contenido HTML
que se le asigne, lo que incluye etiquetas
, atributos
y código JavaScript
1
<iframe width="1000" height="1000" src="https://0a8100d7033f38d380a3768b003c00d1.web-security-academy.net/" onload="this.contentWindow.postMessage('<img src=1 onerror=print()>','*')">
Una vez insertado
este payload
en el exploit server
este es el resultado. Una vez comprobado que funciona correctamente pulsamos sobre Deliver exploit to victim
para enviar
el payload
a la víctima
y resolver
el laboratorio