DOM Based Vulnerabilities Lab2
Skills
- DOM XSS using web messages and a JavaScript URL
Certificaciones
- eWPT
- eWPTXv2
- OSWE
- BSCP
Descripción
Este laboratorio
tiene una vulnerabilidad de DOM-based redirection
que se activa mediante mensajes web
. Para resolver
el laboratorio
, debemos construir una página HTML
en el servidor de exploits
que explote
esta vulnerabilidad
y llame a la función print()
Resolución
Al acceder
a la web
nos sale esto
Si inspeccionamos
el código fuente
vemos que la ventana
tiene un listener
y si enviamos
un mensaje
este se mostrará
en la web
Este script
crea un listener
sobre la ventana actual
, el message
que le mandemos lo almacena
en la variable url
. Posteriormente comprueba
si el indexOf
https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Global_Objects/String/indexOf tanto de http
como de https devuelve algo mayor que -1
, esta condición
se cumple
si encuentra
la cadena
en el string
Si se cumplen
estas condiciones
, el script
nos hace un redirect
a la url introducida
Podemos aprovechar el redirect
para inyectar código JavaScript
Al asignar a location.href
, intentamos cambiar
la ubicación
de la página
, pero javascript:print()
no es una URL válida
para redirección
de página. El navegador interpreta
que debe hacer una redirección
y buscará
una URL válida
, pero al no ser válida
, ignora la parte de JavaScript y solo procesar la URL después del comentario //
, ya que, no lo interpreta como código JavaScript. Esto puede hacer que algunos navegadores interpretaran el resto como una URL válida
, pero esto no siempre es confiable
. Algunos navegadores
pueden simplemente redirigir
a la URL https://testing.com
porque el //
es un comentario
y no afecta la interpretación
de la URL
. Una vez explicado todo nos dirigimos al exploit server
, insertamos
este payload
y pulsamos
sobre View exploit
para comprobar
su funcionamiento
. Una vez comprobado su funcionamiento pulsamos
sobre Deliver exploit to victim
para completar
el laboratorio
1
<iframe src="https://0a9f00fe04b5a5758157169000210095.web-security-academy.net/" onload="this.contentWindow.postMessage('javascript:print()//https://hacked.com','*')">