2016-06-02 9 views
0

Ich wollte meine Schüler Beispiel für DOM-Base XSS-Angriff zeigen. Ich dachte, dass das Einfügen von bösartigem Skript durch innerHTML genug ist. Aber zu meiner Überraschung, wenn ich ein Skript einfüge, scheint es nicht aufgerufen zu werden.Fehlgeschlagenes DOM-basiertes XSS. Einfügen von Skript throght innerHTML

Beispiel ist hier https://jsfiddle.net/vo9baffu/6/example

Meine Frage: ist es möglich, DOM-basierten XSS-Angriff in einer Art und Weise in meinem Beispiel dargestellt zu tun. Wenn nicht, dann und was soll ich ändern?

BTW. Wenn Sie einige gute Beispiele für DOM-basierte XSS kennen, schreiben Sie bitte im Kommentar.

Antwort

1

Kurz: Sie können keine DOM-basierte XSS-Angriff in der in Ihrem Beispiel präsentiert Weise.

Sie müssen jQuery in Ihren HTML-Code einfügen und stattdessen die html() -Methode verwenden. Dadurch wird genau das erreicht, was Sie verlangen, da die html() -Methode den im Skript-Tag eingebetteten Code auswertet.

Mit reinem JavaScript können Sie keinen XSS-Angriff durchführen, da das von Ihnen eingefügte Skript in den meisten Fällen nicht ausgeführt wird. Dies passiert, weil das Inline-Skript nur ausgeführt wird, wenn die Originalseite analysiert wird.

Sie können Ihre Schüler ein XSS-Angriff durch die Verwendung eines img-Tag und ein Fehlerereignis zeigen, wie unten dargestellt:

<img src="whatever.png" onerror="alert('XSS')" /> 

wie in diesem fiddle gezeigt.

2

Mit dem guten alten Bild:

<img src="/bad.png" onerror="alert(-2)" /> 

Voll Code:

function showName() { 
    tt = "script"; 
    badCode = "John<img onerror='alert(-2)' src='/bad.png'>"; 
    console.log(badCode); 
    document.getElementById("name").innerHTML = badCode; 
} 

Wo /bad.pngonerror auslösen soll.

Und Ihre JSFiddle