Cross-Site-Scripting "DOM-basiertes" Beispiele: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „=Cross-Site-Scripting "Reflected"= =Um was geht es?= *DOM-basiertes Cross-Site-Scripting/XSS ==Link== *http://opfer.secure.local/scripts/xss-dom.html“)
 
 
(16 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
=Cross-Site-Scripting "Reflected"=
+
= Cross-Site-Scripting "DOM-basiert" =
=Um was geht es?=
 
*[[DOM-basiertes Cross-Site-Scripting/XSS]]
 
  
==Link==
+
= Um was geht es? =
*http://opfer.secure.local/scripts/xss-dom.html
+
 
 +
* [[DOM-basiertes Cross-Site-Scripting/XSS]]
 +
 
 +
== Link ==
 +
 
 +
* http://opfer.secure.local/scripts/xss-dom.html
 +
 
 +
[[Bild:dom-xss-1.png]]
 +
 
 +
== Normale Verhaltensweise ==
 +
 
 +
* Über den GET-Parameter ''default'' wird der Inhalt dieser Seite generiert
 +
* http://opfer.secure.local/scripts/xss-dom.html?default=Bitte%20auf%20dieser%20Seite%20JavaScript%20ausschalten
 +
 
 +
[[Bild:dom-xss-2.png]]
 +
 
 +
== Exploit über die URL ==
 +
 
 +
* http://opfer.secure.local/scripts/xss-dom.html?default=%3Cscript%3Ealert(%22Hacked%20by%20Xinux%22)%3C/script%3E
 +
 
 +
[[Bild:dom-xss-3.png]]
 +
 
 +
= HTML Code der Seite =
 +
 
 +
<syntaxhighlight lang="html">
 +
<!DOCTYPE html>
 +
<html>
 +
<body>
 +
<h1>DOM Basiertes Cross Site Scripting (XSS)</h1>
 +
Der Inhalt dieser Seite wird statisch generiert.
 +
<script>
 +
if (document.location.href.indexOf("default=") >= 0) {
 +
        var text = document.location.href.substring(document.location.href.indexOf("default=")+8);
 +
        document.write(decodeURI(text));
 +
}
 +
</script>
 +
</body>
 +
</html>
 +
</syntaxhighlight>
 +
 
 +
= Wie können wir so etwas Vermeiden? =
 +
 
 +
== Auf der Seite des Clients ==
 +
* JavaScript auf nicht vertrauenswürdigen Seiten abschalten
 +
 
 +
== Auf Seite des Programmierers ==
 +
 
 +
* <script>-Tags aus dem Parameter entfernen
 +
 
 +
<syntaxhighlight lang="html">
 +
<!DOCTYPE html>
 +
<html>
 +
<body>
 +
<h1>DOM Basiertes Cross Site Scripting (XSS)</h1>
 +
Der Inhalt dieser Seite wird statisch generiert.
 +
<script>
 +
if (document.location.href.indexOf("default=") >= 0) {
 +
        var text = document.location.href.substring(document.location.href.indexOf("default=")+8);
 +
        var parsed = decodeURI(text)
 +
        var parsed = parsed.replace("<script>", "Achtung JavaScript Element! ")
 +
        var parsed = parsed.replace("<\/script>", " Achtung JavaScript Element! ")
 +
        document.write(parsed);
 +
}
 +
</script>
 +
</body>
 +
</html>
 +
</syntaxhighlight>

Aktuelle Version vom 7. März 2023, 11:56 Uhr

Cross-Site-Scripting "DOM-basiert"

Um was geht es?

Link

Dom-xss-1.png

Normale Verhaltensweise

Dom-xss-2.png

Exploit über die URL

Dom-xss-3.png

HTML Code der Seite

<!DOCTYPE html>
<html>
<body>
<h1>DOM Basiertes Cross Site Scripting (XSS)</h1>
Der Inhalt dieser Seite wird statisch generiert.
<script>
if (document.location.href.indexOf("default=") >= 0) {
        var text = document.location.href.substring(document.location.href.indexOf("default=")+8);
        document.write(decodeURI(text));
}
</script>
</body>
</html>

Wie können wir so etwas Vermeiden?

Auf der Seite des Clients

  • JavaScript auf nicht vertrauenswürdigen Seiten abschalten

Auf Seite des Programmierers

  • <script>-Tags aus dem Parameter entfernen
<!DOCTYPE html>
<html>
<body>
<h1>DOM Basiertes Cross Site Scripting (XSS)</h1>
Der Inhalt dieser Seite wird statisch generiert.
<script>
if (document.location.href.indexOf("default=") >= 0) {
        var text = document.location.href.substring(document.location.href.indexOf("default=")+8);
        var parsed = decodeURI(text)
        var parsed = parsed.replace("<script>", "Achtung JavaScript Element! ")
        var parsed = parsed.replace("<\/script>", " Achtung JavaScript Element! ")
        document.write(parsed);
}
</script>
</body>
</html>