Entrada

DOM Based Vulnerabilities Lab2

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','*')">

Esta entrada está licenciada bajo CC BY 4.0 por el autor.