Cross Site Scripting


Cross Site Scripting (Website übergreifendes Scripting) ist eine populäre Angriffs-Technik im Internet, bei der schadhafter Code entweder serverseitig oder clientseitig ausgeführt wird, um sensible Daten bzw. digitale Identitäten zu stehlen. Gemeinsam mit der SQL-Injection bildet Cross Site Scripting, auch XSS oder allgemeiner HTML-Injection genannt, die am meisten verwendete Angriffstechnik bei Webanwendungen und Websites. [1]

Allgemeine Informationen

Cross Site Scripting Attacken setzen voraus, dass

a) ein Hacker bzw. Angreifer einen veränderten Hyperlink an einen Rezipienten (Nutzer oder Server) sendet

b) Der Rezipient diesen öffnet, indem er ihn anklickt, oder verarbeitet, weil er nicht geprüft wird

c) Der Browser des Rezipienten über aktiviertes JavaScript (auch andere Skriptsprachen sind möglich) verfügt

d) Oder der Server, auf dem der Rezipient ursprünglich surfen wollte, Webapplikationen benutzt, die dynamische Websites ausgeben, bei denen keine Formulardaten überprüft werden.

Eine Cross Site Scripting Attacke findet zwischen dem Aufruf von Websites statt. Besucht ein Nutzer eine Website, um beispielsweise Login-Daten einzugeben, sendet der Browser ein Formular mit Daten an den Server. Der Server gibt den Login auf der Website frei, wenn die Daten korrekt sind. Eine Cross Site Scripting Attacke findet genau zwischen den Aufrufen von Websites statt, wobei die Websites keine unterschiedlichen Sites mit verschiedener URL sein müssen, vielmehr kommt die Angriffstechnik bei dynamisch erzeugten Websites zum Einsatz, um zwischen Client und Server zu gelangen, während Daten eingegeben werden. Dort werden dann Antworten vom Server imitiert, um die Daten, die der Nutzer eingegeben hat, an eine Adresse zu senden, die der Angreifer bestimmen kann.

Dies geschieht, indem Skripte ausgeführt werden, die der Angreifer zwischengeschaltet hat. Diese Skripte verwenden Parameter wie GET, POST und (document.cookie), um die Kommunikation zwischen Client und Server zu unterwandern. Sowohl in der Auszeichnungssprache HTML als auch in der Programmiersprache PHP werden solche Methoden unterstützt. Da Millionen Websites diese Sprachen benutzen, gelten XSS Attacken als probates Mittel, um an Benutzerdaten zu gelangen.

Funktionen

Cross Site Scripting wird in drei Typen von Angriffen unterschieden: [2]

1.) Persistent: Bei persistenten XSS Attacken wird der Schadcode dauerhaft angezeigt und ist für den Nutzer nicht unbedingt identifizierbar. In Foren, Communities oder Gästebüchern von Websites wird der Schadcode ungefiltert in Form eines Links dargestellt, da solche Websites selten die Eingaben überprüfen. Eine persistente XSS Attacke kann im Cache einer Webanwendung oder in einer angebundenen Datenbank solcher Websites stattfinden. Persistente Attacken sind stets serverseitig und haben großes Gefahrenpotenzial.

2.) Nicht persistent: Hier wird dem Nutzer ein manipulierter Link geschickt. Sobald dieser den Link anklickt, wird der Schadcode gestartet und ein Skript ausgeführt. Oft werden gefälschte Mails von Angreifern versendet, um Nutzer zu einer Interaktion zu bewegen. Die Angreifer imitieren Formulare und Websites, binden ein Skript ein und gelangen so an Session-Cookies mit Benutzerdaten. Das Gefahrenpotenzial von Nicht-persistenten XSS Attacken ist relativ gering, da sie ein großes Maß an Benutzerinteraktion voraussetzen. Sie sind stets clientseitig und werden meist zusammen mit dynamischen Websites verwendet.

3.) Lokal: In diesem Fall wird der Schadcode direkt an einen Client übermittelt, um ihn zum Beispiel im Browser auszuführen. Eine lokale XSS Attacke ist immer direkt ausführbarer Schadcode, der nicht von einer Schwachstelle in der Server-Client-Kommunikation abhängt. Vielmehr ist es ein direkter Angriff in Form eines Skriptes, das bestimmte Daten wie URL-Argumente oder Script Tags abfragt. Nach der Abfrage wird der schädliche Code im Hintergrund ausgeführt, ohne dass der Nutzer davon Kenntnis erlangt. Lokale XSS Angriffe zielen darauf ab, statische HTML-Seiten anzugreifen. Sie sind aber auch auf einen Benutzer angewiesen, der einen schädlichen Link anklickt.

Gegenmaßnahmen zu Cross Site Scripting

Sowohl Nutzer als auch Webmaster können Schutzmaßnahmen ergreifen. Nutzer können zum Beispiel NoScript-Addons verwenden, die das Ausführen von Skripten unterbinden. Auch das grundsätzliche Deaktivieren von JavaScript ist möglich. Allerdings werden dann andere Skriptsprachen ausgeführt, wie VBScript, PHP- und auch Pearl-Skripte. Besonders wichtig für Nutzer ist es, dass sie Hyperlinks in Emails, Nachrichten oder in Foren skeptisch begegnen. Denn XSS Attacken geben vor, eine offizielle Website zu sein. Mit der nötigen Skepsis können solche Gefahren von vorneherein ausgeschlossen werden. Für Webmaster und Hoster ist es zentral, dass die Programmierung des Quellcodes – insbesondere von Formulardaten – auf korrekte, sichere Weise geschieht. Jegliche Formulardaten sollten auf ihre Korrektheit in Sachen Zeichen, Kodierung und Vollständigkeit hin überprüft werden. Als Best Practise gelten Whitelists, die definieren, welche Daten erlaubt sind. Bei umfangreichen Projekten fallen allerdings auch viele Daten an. Deshalb sind gerade Maßnahmen, die bestimmte Zeichen aus Skripten umwandeln, empfehlenswert. So wird vermieden, dass ausführbare Metazeichen von Skripten vom Server oder Client eingelesen werden. Das Umschreiben von Zeichen ist in jeder Programmiersprache möglich, indem sie entweder ersetzt oder maskiert werden. Eine letzte, aber als unsicher eingestufte Maßnahme sind WAF: Web Application Firewalls, die spezielle Webanwendungen vor unerlaubtem Zugriff mit einer Firewall schützen sollen.

Bedeutung für die Suchmaschinenoptimierung

Cross Site Scripting wird auch im Bereich Suchmaschinenoptimierung verwendet. Eine Website wird gehackt, um dort Backlinks zu platzieren, die auf eine Domain verweisen, die gestärkt werden soll. Cross Site Scripting ist eine bekannte Black-Hat-Methode, die die Sicherheitslücken von Servern und Clients ausnutzt, um Links einzubetten, von denen die Webmaster dieser Sites keine Kenntnis erlangen sollen. Google und auch andere Suchmaschinen strafen solche Links ab, weil sie als manuelle, unnatürliche Maßnahmen betrachtet werden. Oft ist jedoch der Fall, dass Suchmaschinen nicht unbedingt feststellen können, woher diese Links stammen bzw. wie sie auf die Website gekommen sind.[3] Um Cross Site Scripting effektiv zu verhindern, muss also der Webmaster verschiedene Maßnahmen ergreifen, die im vorherigen Punkt beschrieben wurden.

Einzelnachweise

  1. Cross Site Scripting Attack. acunetix.com. Abgerufen am 26.05.2014.
  2. Cross Site Scripting: Dokumentation, Analyse & Techniken. vulnerability-lab.com. Abgerufen am 26.05.2014.
  3. Search Engine Optimization Companies: Break Google's Rules to Get Top Rankings?. searchenginewatch.com. Abgerufen am 26.05.2014.

Weblinks