Stell dir vor, dass du dich plötzlich nicht mehr in deinen Lieblings-Online-Shop einloggen kannst. Darüber hinaus macht jemand einige seltsame Kommentare in deinem Namen und kauft etwas ein. Erinnerst du dich an das eine Mal, als du auf einen Link im Kommentarbereich einer Website geklickt hast, um die von jemandem empfohlene Jacke anzusehen? Es scheint, dass du auf einen Fall von Cross-Site-Scripting (oder XSS) gestoßen bist. Lies weiter unten, warum das gefährlich ist, und warum es so einfach ist, dem zum Opfer zu fallen.
Inhalt
Was ist Cross-Site-Scripting?
Ein Cross-Site-Scripting (oder XSS)-Angriff tritt auf, wenn ein Hacker bösartigen Code in eine ansonsten zuverlässige Website oder App einfügt. Dieser nutzt Schwächen von HTML, JavaScript oder jeder anderen Programmiersprache, die von einem Browser unterstützt wird. Ein solcher Code funktioniert eher auf der Clientseite als auf der Serverseite, so dass er die Website nicht direkt beschädigt – sondern stattdessen auf die Benutzer abzielt. Je nach XSS-Typ können Benutzer den Schadcode aktivieren, indem sie entweder auf einen Link klicken oder eine kompromittierte Website besuchen.
Einmal aktiviert, kann ein Cross-Site-Scripting-Angriff eine große Menge von Benutzerdaten an Hacker durchsickern lassen, einen Trojaner einschleusen, böswillige Umleitungen durchführen, sich als Benutzer ausgeben, indem man deren Anmeldeinformationen stieht, usw.
Arten von Cross-Site-Scripting
Reflected XSS
Reflected XSS findet statt, wenn ein Benutzer auf einen böswilligen Link zu einer gefährdeten Website klickt. Dann spiegelt die Webseite das Skript im Browser des Opfers wider, der es ausführt. Ein Cyberkrimineller kann dann die Session-Cookies des Benutzers entführen und deren Autorisierungsdaten stehlen.
Eine Website kann die eingehenden Anfragen nicht ordnungsgemäß bereinigen, sodass Cyberkriminelle schädliche Skripte in einen Link einfügen können. Ihre Besitzer sind sich möglicherweise auch nicht bewusst, dass jemand ihre Website für solche Zwecke verwendet.
Als Beispiel: Mary hat einen Onlineshop, den Jane viel benutzt. Jane meldet sich auf der Website an, indem sie ihren Benutzernamen und ihr Passwort eingibt, die in einem Autorisierungs-Cookie gespeichert werden. Tom ist in unserem Fall der Böse. Er findet heraus, dass Marys Website eine Schwachstelle enthält. Er erstellt eine böswillige URL und sendet sie Jane in einer E-Mail, die als attraktives Angebot verkleidet ist. Jane klickt auf den Link und führt das Skript aus. Das Skript infiziert dann Janes Browser und sendet alle Anmeldedaten, die mit dem Anmelde-Cookie der Website verknüpft sind, an Tom. Tom kann sich als Jane im Onlineshop anmelden, ihre Rechnungsinformationen stehlen und Passwörter ändern.
Stored XSS
Beim Angriffstyp Stored XSS fügen Hacker nicht nur schädliches Skript in einen einzelnen Link ein — sie platzieren es auf dem Server einer Website. Sie verstecken das Skript in einem bestimmten Abschnitt der Website, wo es für eine unbestimmte Zeit lauern kann (z. B. im Kommentarabschnitt). Immer wenn Benutzer auf diesen Abschnitt zugreifen, können die Hacker alle ihre Anmeldeinformationen erhalten, die mit dieser Sitzung verknüpft sind. Wenn ein Reflected XSS-Angriff an das Fischen mit einer Rute erinnert, so ist ein Stored XSS-Ansatz mehr wie ein Fischernetz, da man so weit mehr Benutzer beeinflusst.
Beispielsweise entdeckt Alice eine Schwachstelle auf Johns Website und fügt in ihrem Kommentarbereich ein bösartiges HTML-Tag ein. Es bleibt einfach da. Wenn Besucher nun den Kommentarbereich besuchen, aktiviert das Tag das Skript des Hackers, das auf einer anderen Website gehostet wird. Es sendet ihr alle Daten aus deren Autorisierungs-Cookies. Sie kann sich dann auf der Website anmelden und sich als jeder kompromittierte Benutzer ausgeben.
DOM-based XSS
Wenn du eine Website lädst, erstellt dein Browser ein Dokumentobjektmodell (oder DOM) der Seite. Es ist wie ein Vermittler zwischen der HTML-Seite und JavaScript, was die Seite dynamisch und leicht zu ändern macht. Bei DOM-basiertem XSS schreibt der kompromittierte JavaScript-Code die Daten in das DOM. Ähnlich wie beim Reflected XSS-Ansatz initiiert ein Benutzer es, indem er auf einen kompromittierten Link klickt. In diesem Fall verstecken Hacker den bösartigen Code viel tiefer im Code, sodass er nicht nur durch doppelte Überprüfung der URL nachverfolgt werden kann. Man müsste den Code der Website überprüfen, um ihn zu identifizieren.
Self-XSS
Ein Self-XSS-Angriff verlässt sich nicht auf eine anfällige Website – stattdessen verleitet er Benutzer dazu, ein bösartiges Skript in ihren eigenen Browser einzufügen. Normalerweise verwenden Cyberkriminelle dafür Social Engineering-Taktiken. Beispielsweise können sie einen Benutzer davon überzeugen, Code in ihren Browser einzugeben, indem sie versprechen, dass er auf ein anderes Konto mit zusätzlichen Vorteilen zugreifen kann. Das erlaubt es dem Hacker jedoch nur, das Konto des Opfers zu stehlen.
Verhinderung von Cross-Site-Scripting
XSS-Angriffe sind auf Codeebene gut versteckt, sodass man sie möglicherweise für eine sehr lange Zeit nicht bemerkt. Was noch schlimmer ist: Die Besitzer von anfälligen Websites finden XSS auch häufig viel zu spät. Wie immer gibt es jedoch einige Maßnahmen, um dies zu verhindern:
Verwende immer die aktuellste und zuverlässigste Sicherheitssoftware, die dich automatisch daran hindern kann, bösartige Websites aufzurufen;
Aktualisiere immer deinen Browser, um sicherzustellen, dass du die neueste Version verwendest. Stelle sicher, dass dein Browser über Anti-XSS-Sicherheitsfunktionen verfügt;
Öffne keine verdächtigen Links, auch wenn sie auf den ersten Blick legitim aussehen. Überprüfe immer die URL, um zu sehen, dass nichts Ungewöhnliches vorkommt;
Wende dich immer an die Personen, die die Website betreiben, wenn du etwas Verdächtiges bemerkest (z. B. wenn du dich nicht mit deinen üblichen Anmeldeinformationen anmelden kannst, wenn du Einkäufe, die du nicht getätigt hast, usw.).