Entstehung von XSS-Schwachstellen
XSS entsteht, wenn eine Webapplikation Benutzereingaben nicht korrekt überprüft oder filtert.Ablauf
- Ein Benutzer gibt Daten in ein Formular oder eine URL ein.
- Die Anwendung übernimmt diese Daten ohne Prüfung.
- Die Daten werden direkt auf der Webseite ausgegeben.
- Der Browser interpretiert den eingeschleusten Code als JavaScript und führt ihn aus.
Typische Orte
- URL-Parameter
- Formularfelder
- Kommentare
Angriff durchführen
Ein einfacher Proof-of-Concept-Angriff kann mit folgendem JavaScript erfolgen:Auswirkungen
Ein erfolgreicher XSS-Angriff kann verschiedene Folgen haben:- Diebstahl von Session-Cookies
- Übernahme von Benutzerkonten
- Ausspähen von Benutzereingaben
- Manipulation von Webseiteninhalten
- Weiterleitung auf Schadseiten
- Durchführung von Aktionen im Namen des Benutzers
Arten von XSS
Reflektiertes XSS
Reflektiertes XSS tritt auf, wenn Benutzereingaben vom Server direkt wieder auf der Webseite angezeigt werden, ohne sie ausreichend zu prüfen.- Schadcode wird nicht gespeichert
- Code wird nur temporär über eine manipulierte Anfrage eingeschleust
- Opfer wird meist über präparierte Links (z. B. per E-Mail) zum Klick gebracht
Beispiel
Eine manipulierte URL enthält schädlichen Code:Persistentes XSS
Beim persistenten XSS wird der Schadcode dauerhaft auf dem Server gespeichert.- Code wird z. B. in Datenbanken gespeichert
- Jeder Besucher der Seite führt automatisch den Schadcode aus
- Besonders gefährlich bei Webseiten mit vielen Nutzern
Beispiel
Ein Angreifer postet einen Kommentar mit schädlichem JavaScript. Der Code wird gespeichert und bei jedem Aufruf des Beitrags ausgeführt.DOM-basiertes XSS
DOM-basiertes XSS entsteht nur im Browser (Client-Seite) und nicht auf dem Server.- Der Server liefert eine eigentlich harmlose Seite
- Der Client-seitige JavaScript-Code verarbeitet unsichere Daten
- Die Manipulation erfolgt im DOM (Document Object Model)