Ein Kuckucksei im Nest: XSS (Cross Site Scripting)

Nest_Blog

Unter XSS versteht man einen Angriff, der mit Hilfe einer Webseite auf dem Browser oder PC eines Opfers ausgeführt wird. Meistens wird dabei Schadcode im Browser ausgeführt, der Anzeigen manipuliert oder Eingaben tätigt. Die Abkürzung (XSS) entstand aus der Aussprache des „X" als „Cross" gefolgt von den beiden Anfangsbuchstaben „Site Scripting". Zusammengefasst werden alle Angriffe und Einstiegsmöglichkeiten als XSS beschrieben, bei denen Skripte im Browser des Opfers über eine oder mehrere Webseiten hinweg ausgeführt werden. Sehr ähnlich, aber nicht identisch, ist die „Cross Site Request Forgery" (CSRF), diese wird hier nicht näher beschrieben, da es den Rahmen des Artikels überschreiten würde.

Ja wo kommt das denn her?

Ein XSS-Angriff kann durchgeführt werden, ohne dass die Opfer davon etwas mitbekommen oder etwas aktiv tun müssen. Theoretisch kann daher jeder betroffen sein. Das Opfer besucht eine Webseite über seinen Webbrowser. Dabei werden (wie bei den meisten Webaufrufen) JavaScript-Dateien und Style-Sheets geladen und im Browser des Aufrufenden ausgeführt, um eine korrekte Anzeige der Webseite zu ermöglichen. 

Bei einem XSS-Angriff wird nun schädlicher Code (z.B.: JavaScript) von einem Angreifer auf einer anderen Seite positioniert, so dass dieser Code vom Browser des Clients ausgeführt wird. Dadurch führt der Webbrowser des Opfers Code des Angreifers aus. Das „reine" Cross Site Scripting ist bereits dadurch erfüllt, dass auf einer Website Code ausgeführt wird, der nicht vom „eigentlichen" Webseiten-Betreiber stammt. Die weiteren Angriffsmöglichkeiten, die daraus entstehen, sind sehr vielseitig.

Webseiten entwickeln ein Eigenleben

Es gibt viele Möglichkeiten, wie so ein Angriff ablaufen kann.

Der Angreifer könnte einen manipulierten Eintrag in einem Forum oder als Kommentar verfassen, der einen „<script>"-Teil enthält.
Dieser Teil wird auf dem Client-PC ausgeführt und kann alles, von harmlosen „alert"-Meldungen bis hin zu komplexen Skripten, die Schadsoftware auf den Computer herunterladen (sog. Dropper), beinhalten. Teilweise nutzen diese Skripte Sicherheitslücken in Software (z.B.: Browser, deren Add-Ons oder zusätzliche Software wie z.B.: Java oder Flash), um sich weiter auf dem System auszubreiten und dort dauerhaft festzusetzen.

Durch den ausgeführten Code können zum Beispiel automatisch Eingabefelder gefüllt werden. Auf diese Art und Weise können versteckte Felder mit Inhalten versehen werden, ohne dass es der Benutzer sieht. Das ist zum Beispiel für Passwort-Manager (PW-Manager) ein großes Problem, wenn auf einer Webseite neben dem Benutzernamen und dem Passwort-Feld noch weitere Felder (z.B.: Adresse oder Kreditkartendaten) vorhanden sind, die dem Benutzer aber nicht angezeigt werden. 


Auch die Anzeige von Feldern und Buttons kann so manipuliert werden, dass es für den Aufrufer der Webseite aussieht, als solle er sich auf der eigentlichen Webseite einloggen. Die Daten werden dabei aber an den Angreifer anstatt der eigentlichen Webseite gesendet. Die etwas trickreicheren Skripte können die Benutzerdaten sowohl an die eigentliche Webseite als auch (zum Beispiel per websocket) an den Angreifer verteilen. So merkt das Opfer nicht, dass seine Zugangsdaten gestohlen wurden, da der Login fehlerfrei funktioniert hat.

Die Webseite tut was der Angreifer will

Risiken, die durch XSS-entstehen:
  • Integrität: Die Manipulation von Ein- und Ausgaben ist weitreichend möglich, da der Angreifer durch die Ausführung auf dem Client des Opfers die komplette Kontrolle über die Webseite hat.
  • Vertraulichkeit: Im Internet wird häufig eine Verschlüsselung über TLS realisiert. Da diese aber bereits vor der Anzeige im Webbrowser beendet wird und erst nach der Ausführung des letzten Skripts wieder begonnen wird, hat der Angreifer die Möglichkeit, alle Daten uneingeschränkt zu lesen.
  • Verfügbarkeit: Der Angreifer kann über das Skript das Absenden von Informationen z.B. via Formular verhindern oder den kompletten Inhalt einer Webseite leeren. Dadurch können ganze Webseiten unzugänglich gemacht werden.

XSS geht uns alle an

 Jeder kann etwas zum Schutz gegen Cross-Site-Scripting tun.

Clientseitig stehen für die meisten Browser Add-Ons zur Verfügung, welche die Ausführung von Skripten verhindern können. Dadurch werden keine Skripte mehr von Webseiten ausgeführt, außer der Benutzer stimmt diesen Skripten explizit zu. Das bedeutet mehr Sicherheit aber auch mehr Arbeit für den Anwender

Serverseitig sollten die Ausgaben von Webseiten bereits vor der eigentlichen Auslieferung von schadhaften Codeblöcken bereinigt werden. So dürfen zum Beispiel Benutzereingaben keine „<script>"-Blöcke enthalten. Diese können beispielsweise mittels des „\" in „<\script\>" geändert werden, dadurch führt der Browser diese nicht mehr aus.

Zusammenfassung

Wie man gesehen hat, bergen solche vermeintlich harmlosen Sicherheitslücken immense Gefahren für das Opfer und können auf vielseitige Art und Weise ausgenutzt werden. Der Angegriffene merkt meist gar nichts von der Attacke oder entdeckt diese erst, wenn es bereits zu spät ist. Jeder Webseiten-Betreiber sollte darauf achten, dass seine Webseiten gegenüber XSS-Sicherheitslücken abgesichert sind. Das geht bei selbst erstellen Webseiten über entsprechende Befehle im PHP-/Python-/Go-/… Code oder durch den Einsatz gängiger Frameworks, die meist auch schon eine entsprechende Absicherung mitbringen. Als Anwender sollte man sich mit der Verwendung von Skript-Blockern auseinandersetzen. Allerdings ist eine Grundkenntnis von Webseiten und Webtechnologie bei der Verwendung solcher Add-Ons auf jeden Fall sinnvoll.

By accepting you will be accessing a service provided by a third-party external to https://blog.ordix.de/