
Descripción
This lab demonstrates a simple web message vulnerability. To solve this lab, use the exploit server to post a message to the target site that causes the print()
function to be called.
DOM XSS using web messages writeup
Al entrar al laboratorio y examinar su código fuente con Ctrl + U o Click derecho ->Ver código fuente de la página, veremos el siguiente script:
<script>
window.addEventListener('message', function(e) {
document.getElementById('ads').innerHTML = e.data;
})
</script>
Usaremos este ‘addEventListener’ para inyectar un elemento ‘<img>’ que lleve JavaScript encargado de ejecutar la función ‘print()’ en la víctima. Para ello nos vamos a ‘Go to exploit server’ e introducimos el siguiente código en el ‘Body’:
<iframe src="https://0a1200730319d011806b71df00340096.web-security-academy.net/" onload="this.contentWindow.postMessage('<img src=1 onerror=print()>','*')">
Nota: Dado que esta vez no hay ninguna protección, no tendremos que usar ‘onresize’. Podemos hacerlo directamente.
Este código carga la página del laboratorio y le dice al ‘addEventListener’ que cargue una foto con una URL rota (src). Cuando la foto se cargue y no funcione, el navegador usará la función que hay definida en ‘onerror’, encargada de ejecutar el print().
El »*» es el segundo argumento de la función postMessage. Le dice a esta que envíe el mensaje (la foto con el XSS) a cualquier dominio sin restricciones.

Al pulsar ‘Deliver exploit to victim’ habremos completado el laboratorio
