[DE] Cross-Site-Scripting (XSS) Angriffe verstehen

View this thread on: d.buzz | hive.blog | peakd.com | ecency.com
·@security101·
0.000 HBD
[DE] Cross-Site-Scripting (XSS) Angriffe verstehen
Unter ***Cross-Site-Scripting (XSS)*** versteht man eine Schwachstelle in Webanwendungen, durch die es möglich ist Schadcode (meistens JavaScript) auszuführen. 

Oftmals ist dies durch Felder für Nutzereingaben möglich, in dem die Eingaben nicht ensprechend geprüft werden.
Wichtig zu verstehen ist hierbei, dass JavaScipt im Browser des Besuchers und nicht auf dem Webserver ausgeführt wird.


<center>
https://www.netsparker.com.tr/img/article/DOM-XSS-Zafiyeti.png
[Quelle](https://www.netsparker.com.tr/img/article/DOM-XSS-Zafiyeti.png)
</center>


Im Folgenden möchte ich die drei grundlegenden Arten
 -  Reflexiv
 -  Persistent
 - DOM-Basiert

 anhand des  [XSS-Spiel](https://xss-game.appspot.com/) von Google veranschaulichen. Damit ist es möglich sich spielerisch mit Cross-Site-Scripting auseinander zu setzten um die Funktionsweise zu lernen.


Ziel ist es als *Proof of concept* Code auszuführen, der ein Pop-Up mittels ```alert()```erscheinen lässt. Bei einem „richtigen“ Angriff würde hier entsprechender Schadcode ausgeführt werden, der Cockies ausliest etc. 

---


## Level 1:
Hier sehen wir ein Eingabefeld, das eine Suchfunktion darstellt.

![Bildschirmfoto 2018-03-31 um 19.16.59.png](https://steemitimages.com/DQmUvvE4L7sH3WKz9hZBc8ThftU8mXG78sj3TQ5bPA4XjV1/Bildschirmfoto%202018-03-31%20um%2019.16.59.png)

 Wird in dieses etwas eingegeben, so erscheint der entsprechende Text nach dem Absenden
![level1.png](https://steemitimages.com/DQmdqZaY51r3dUGb55wdDPdg7QxNh9C6LnQ8ZbgrmSNaXE2/level1.png)

Die wohl einfachste Möglichkeit eines XSS-Angriffes ist es, den Code direkt einzugeben:

```
<script>alert("Hello Steemit")</script>
```

![lvl1.png](https://steemitimages.com/DQmdE6w4nxE3sxUZ5ExU7d6ShFUCmkLFAH1rfdeNxWdACXu/lvl1.png)

Hierbei handelt es sich um einen sogenannten **reflektierten Angriff**. Reflektiert, weil die Benutzereingabe (in diesem Fall der gesuchte Text) nochmal ausgegeben wird.

---


## Level 2:
Hier wird ein Forum simuliert. Die Texteingabe wird gespeichert und den anderen Benutzern verfügbar gemacht.

![lvl2.png](https://steemitimages.com/DQmbdkZkEricnHSr39FH3zyrcmWk7HZj5oWMNnCCJaqiS5s/lvl2.png)

Die direkte Eingabe des Scriptes wie oben ist hier nicht möglich. Indem ein Bild eingebunden wird, welches nicht geladen werden kann kommt unser Code im ```onerror```Event zur Ausführung.

Hier spricht man von einem **persistenten Angriff**. Persistent, da der Code (in diesem Fall über eine Kommentarfunktion) auf dem Webserver gespeichert wird. Jedes mal wenn ein Benutzer die Seite läd wird der Code im Browser ausgeführt.

---


## Level 3:
Hier haben wir kein Eingabefeld, in welches wir schreiben können. Durch das Klicken auf eines der Reiter ändert sich das entsprechende Bild.

![Bildschirmfoto 2018-03-31 um 19.27.56.png](https://steemitimages.com/DQmYA8mtcZbwDxLvJPzZbKpeViSrnPgNSrAxshF5Z3F6V3s/Bildschirmfoto%202018-03-31%20um%2019.27.56.png)

Ein Blick in den Quelltext verschafft uns Einsicht in die Funktionsweise


![Bildschirmfoto 2018-03-31 um 19.34.10.png](https://steemitimages.com/DQmRoeVMSYdCvs7u1WRESnWg5AReFdnRW7K1nYaKtKC7Txm/Bildschirmfoto%202018-03-31%20um%2019.34.10.png)

![lvl3.1.png](https://steemitimages.com/DQmY6XvgSRKBJHtCnkjckRJKGfS3fLaJytFTqsys7LApwJR/lvl3.1.png)

Das Bild wird abhängig vom angeklickten Tab geladen. Die Dateinamen werden hierbei entsprechend Zusammengesetzt(cloud1.jpg, cloud2.jpg, cloud3.jpg)

Durch Einfügen eines einfachen ```'```"brechen"  wir aus dem JS Code aus, und führen anschließend wie zueben über das HTML event ```onerror``` den entsprechenden Code aus: 

```
https://xss-game.appspot.com/level3/frame#3' onerror='alert("Level 3.")'; 
```

![Bildschirmfoto 2018-03-31 um 12.45.46.png](https://steemitimages.com/DQmPGTBVeKDR59xAdeVRENgX1GpoKvdrkfPDfcctev6JK7g/Bildschirmfoto%202018-03-31%20um%2012.45.46.png)

Diese Art des Angriffs nennt man lokales  bzw. DOM-Basiertes Cross-Site-Scripting. Hierbei wird das **D**ocument **O**bject **M**odell manipuliert.

---

### Wie Schütze ich mich als Besucher einer Webseite ?
Durch deaktivieren von JavaScript z.B durch entsprechende Browser-Addons wird kein Code mehr ausgeführt. Natürlich kann es sein, dass Funktionalität der Webseite hiedurch eingeschränkt wird. 

### Wie schütze ich meine Webanwendung ?
Durch den Einsatz von entsprechenden Tools wie [DOM Snitch](https://code.google.com/archive/p/domsnitch/) können während dem Entwickeln entsprechende Tests durchgeführt werden. 

Sinvoll ist es in jedem Fall einmal einen Blick in [Reviewing Code for XSS](https://www.owasp.org/index.php/Reviewing_Code_for_Cross-site_scripting) und [XSS Filter Evasion](https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet)von OWASP zu werfen.


<center>
https://steemitimages.com/0x0/https://i.imgur.com/NLy7ba1.png

Ich hoffe euch einen groben Überblick gegeben zu haben. Bei weiteren Fragen beantworte ich diese natürlich gerne in den Kommentaren. Ansonsten könnt ihr euch ja mal an den nächsten Leveln versuchen ;)


Vielen Dank fürs Lesen ! 
</center>
👍 , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,