Come è possibile avere DOM XSS qui?

8

Stavo guardando questo sito e sto cercando di capire come questo XSS è possibile, ma non riesco a capirlo. Ecco l'URL: link

<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>
    
posta Michael Blake 26.12.2013 - 04:58
fonte

2 risposte

12

Questa pagina sta prendendo input da una fonte non affidabile e la trasmette direttamente nel browser come HTML.

In questo caso, la fonte non attendibile è window.name . Per il programmatore inesperto, questo può sembrare innocuo, ma in realtà, può essere impostato su qualsiasi valore arbitrario, perché è derivato dal nome del frame:

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

Nel codice che hai fornito, c'è un altro buco abbagliante: il selettore è anche preso da una fonte non sicura (l'URL), che consente agli aggressori di produrre l'HTML in qualsiasi luogo desideri. Questo non ha bisogno di essere un frame, basta visitare il seguente URL:

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

t è impostato su "whatever],body,[whatever" (da location.hash ) e viene utilizzato per costruire un selettore jQuery ( "div[id="+t+"]" ). Insieme, risulta in un selettore che seleziona (ad es.) L'elemento <body> :

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

Sebbene non sia così dannoso come window.name , potrebbe valere la pena di aggiustarlo.

    
risposta data 26.12.2013 - 10:08
fonte
1

Oltre ai vettori di attacco descritti nella prima risposta, e l'attaccante può impostare

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

Sulla loro pagina Web dannosa e reindirizza la vittima sulla tua pagina web. Poiché window.name persiste attraverso il caricamento della pagina, questo sarebbe anche un vettore di attacco xss.

    
risposta data 04.02.2015 - 05:21
fonte

Leggi altre domande sui tag