¿Cómo es posible DOM XSS aquí?

9

Estaba mirando este sitio web y tratando de entender cómo es posible este XSS, pero no puedo entenderlo. Aquí está la URL: enlace

<script src="../js/jquery-1.9.1.js"></script>
<script>
function setMessage(){
    var t=location.hash.slice(1);
    $("div[id="+t+"]").html("Message from the name "+window.name);
}
$(document).ready(setMessage);
</script>
<span>
    <a href="#message" > Show Here</a>
    <div id="message">Showing Message1</div>
</span>
<span>
    <a href="#message1" > Show Here</a>
    <div id="message1">Showing Message2</div>
    
pregunta Michael Blake 26.12.2013 - 04:58
fuente

2 respuestas

12

Esta página recibe información de una fuente que no es de confianza y la publica directamente en el navegador como HTML.

En este caso, la fuente no confiable es window.name . Para el programador inexperto, esto puede parecer inofensivo, pero en realidad, se puede establecer en cualquier valor arbitrario, porque se deriva del nombre del marco:

<iframe
    src="http://www.domxss.com/domxss/01_Basics/05_jquery_html.html?681973661#message"name="<script>alert(0)</script>"
></iframe>

En el código que has dado, hay otro agujero deslumbrante: el selector también se toma de una fuente no confiable (la URL), que permite a los atacantes mostrar el HTML en cualquier lugar que deseen. No es necesario que sea un marco, solo visite la siguiente URL:

http://www.domxss.com/domxss/01_Basics/05_jquery_html.html?681973661#whatever],body,[whatever

t se establece en "whatever],body,[whatever" (de location.hash ), y se usa para construir un selector jQuery ( "div[id="+t+"]" ). Juntos, dan como resultado un selector que selecciona (por ejemplo) el elemento <body> :

"div[id=whatever],body,[whatever]"

Aunque no es tan dañino como window.name , podría valer la pena arreglarlo.

    
respondido por el Rob W 26.12.2013 - 10:08
fuente
1

Además de los vectores de ataque descritos en la primera respuesta, el atacante podría establecer

window.name="<script>alert(1)</script>";

En su página web maliciosa y redirige a la víctima a su página web. Debido a que window.name persiste en la carga de la página, esto también sería un vector de ataque xss.

    
respondido por el winhowes 04.02.2015 - 05:21
fuente

Lea otras preguntas en las etiquetas