Was ist Cross-Site Scripting (XSS)?

Cross-Site Scripting (XSS) ist eine Art von Schwachstelle, die sehr weit verbreitet ist und es einem Angreifer erlaubt, schädlichen Code (JavaScript) über die Verwendung einer verwundbaren Webanwendung in Ihren Browser einfügen. Der Angreifer kann den Schadcode auf verschiedene Weise einschleusen. Dies kann über einen vermeintlich harmlosen Link (Reflektiertes XSS) geschehen oder indem die Angreifer darauf warten bis Sie eine Seite, welche bereits Schadcode enthält (Gespeichertes oder Persistent XSS), besuchen.

Das lästige Pop-up-Fenster mit der Nummer 1 als Inhalt? Das ist nur eine Möglichkeit, die einige Menschen nutzen, um visuell zu verifizieren, dass ihr Javascript (XSS) ausgeführt wurde. Aber lassen Sie sich durch das unspektakulären Pop-up-Fenster nicht täuschen, XSS kann mehr als das!

Was können Hacker mit XSS tun?

Ein Hacker könnte Ihre "Cookies" stehlen und sich bei der Anwendung für Sie ausgeben.

Angreifer könnten Sie, ohne das Sie es bemerken, zu einer bösartigen Website umleiten. So wird versucht Sie zur Herausgabe von sensiblen Informationen, wie beispielsweise ihren Bankdaten, zu verleiten.

Sie könnten gefälschte Login-Seiten zu verwundbaren Anwendung hinzufügen, um Sie so dazu zu verleiten Ihren Benutzernamen und Ihr Passwort preiszugeben.

Sie könnten XSS sogar dazu verwenden, andere Sicherheitsmaßnahmen, die zu Ihrem Schutz in die Anwendung und Ihren Web-Browser integriert sind, zu umgehen.

Die Möglichkeiten sind fast grenzenlos. Ihre Webcam übernehmen? Ja! Über das Mikrofon auf Ihrem Computer mithören? Sicher!

Für fortgeschrittene Angriffe schauen Sie sich das "The Browser Exploitation Framework (BeEF)" an.

Wer wurde bereits mit XSS gehackt?

Die Server der Apache Foundation, den Erfindern und Entwicklern einer der beliebtesten Web-Server-Software im Internet, wurden durch einen anfänglichen XSS-Angriff kompromittiert.

Ein XSS-Angriff aus das offizielle Forum des beliebten Linux-Betriebssystem Ubuntu erlaubte den Angreifern, die Nutzernamen, E-Mail-Adressen und Passwörter von 1,82 Millionen Nutzern herunterzuladen.

XSS-Angriffe zielen in der Regel auf die Benutzer der Anwendung und ihre lokalen Netzwerke. Wie aber in den obigen Beispielen zu sehen ist, wenn die Benutzer Administratoren sind, dann sind die Webserver der Anwendung ebenfalls in Gefahr.

XSS-Schwachstellen werden täglich auf Facebook, Yahoo, Google, Twitter und anderen hochkarätigen Websites von unabhängigen Sicherheitsexperten, im Rahmen sogenannter "Bug Bounty" Programme, entdeckt.

Hier ist eine Liste von weiteren Hacks mit XSS - https://www.google.com/fusiontables/DataSource?snapid=S1158702BBoV

Was kann ich tun, um mich gegen XSS zu schützen?

Stellen Sie sicher, dass Ihr Webbrowser immer auf dem aktuellsten Stand ist und dass dort alle Sicherheitsfunktionen aktivert sind, wie beispielsweise der Cross-Site Scripting (XSS) Filter. Wenn Ihr spezieller Browser nicht über einen XSS Filter verfügt, wie etwa Firefox, dann können Sie ein XSS-Filter Add-on namens NoScript herunterladen.

Seien Sie vorsichtig, auf welche Links Sie klicken. Ein Link kann harmlos aussehen, aber mit bösartigen Inhalten präpariert sein oder darauf verweisen.

Melden Sie sich von Webseiten ab, wenn Sie auf diese fertig sind. Dies macht es für Hacker schwieriger Ihre "Cookies" zu stehlen.

Die technische Part! Was kann ich tun, um meine Webanwendung gegen XSS zu schützen?

Cross-Site Scripting tritt auf, wenn nicht vertrauenswürdige Eingaben auf einer Seite ausgegeben werden, ohne das diese vorher ausreichend bereinigt und / oder adequat kodiert wurden.

Was passiert zum Beispiel, wenn ein Benutzer seinen Beutzernamen für die Anmeldung eingibt, dieser HTML-Zeichen enthält und Sie diesen Benutzernamen dann anzeigen, ohne ihn vorher zu bereinigen und / oder zu kodieren? Der Webbrowser wird nicht in der Lage sein, den Unterschied zwischen dem Benutzernamen und dem gültigen HTML-Code der Seite zu erkennen. Daten (der Benutzername) werden mit Code (HTML) vermischt! Dies könnte damit einem Benutzer erlauben, sich mit einem Benutzernamen, der schädliches Javascript enthält, anzumelden und es im Browser, im Kontext der Web-Anwendung, ausführen zu lassen.

Stellen Sie immer sicher, dass Sie den Benutzernamen bereinigen. Wenn zum Beispiel die Benutzer nur alphanumerische Zeichen in ihren Beutzernamen verwenden sollen, dann erzwingen Sie dies mit einer Bereinigung der Eingabe. Verwenden Sie eine "Whitelist"! Vergleichen Sie den Benutzernamen gegen Eingaben, von denen Sie wissen das sie ungefährlich sind, und nicht gegen Eingaben, von denen Sie wissen das diese bösartig sind.

Benutzen Sie die richtige Kodierung! Wenn der Benutzername innerhalb von HTML verwendet wird, dann kodieren Sie alle Zeichen des Benutzernamens als HTML. Auf diese Weise wird der Browser wissen, was als HTML interpretiert werden soll und was nicht. Es geht aber nicht nur um HTML-Codierung! Sie müssen die Kodierung immer nach dem korrekten Kontext wählen, für den die Ausgabe bestimmt ist. Für weitere Informationen verwenden die die Links weiter unten.

Prüfen Sie ihre Anwendungen auf XSS-Schwachstellen. Es gibt viele automatisierte Schwachstellen-Scanner im Internet, die XSS-Probleme in Webapplikationen erkennen können. Sie könnten beispielsweise das Open Source Programm OWASP ZAP ausprobieren.

Setzen Sie Ihre Session-Cookies mit dem HTTPOnly Attribut. Dies teilt dem Browser mit, dass auf das Cookie nicht über JavaScript zugegriffen werden darf, was den Benutzern hilft, ihre Sitzungen vor Diebstahl zu schützen.

Ein HTTP-Header namens Content Security Policy (CPS) kann vom Webserver gesetzt werden, und den Webbrowser anweisen welches Javascript erlaubt ist und wo es ausgeführt werden darf. Hierbei wird eine Whitelist verwendet!

Schlussendlich, warum nicht eine Web Application Firewall (WAF) installieren, wie die Open-Source WAF mod_security für Apache. Eine WAF stellt Ihrer Anwendung eine zusätzliche Verteidigungsschicht gegen diese Angreife zur Verfügung, sollte aber in einer soliden Verteidigungsstrategie und nicht als der einzige Schutz verwendet werden, da desöfteren Wege gefunden werden, den Schutz einer WAF zu umgehen.

Wo finde ich weitere Informationen?

Die zwei, auf dieser Seite erwähnten, Arten von XSS (Reflektiert und gespeichert) sind nicht die Einzigen! Wir haben das Thema nur angetastet. Möchten Sie mehr wissen?

Das Open Web Application Security Project (OWASP) ist eine hervorragende Ressource für alle Dinge, welche die Sicherheit von Webanwendungen betreffen. Sehen Sie sich deren Wiki-Artikel über XSS oder die Tipps und Tricks zur Vermeidung von XSS doch mal genauer an. Für Informationen zu anderen Arten von Schwachstellen in Webanwendugen werfen Sie einen Blick auf die OWASP Top 10.

Danke fürs Lesen,
Ryan Dewhurst & Thomas MacKenzie

---

Ziel dieser Seite ist es, die Dinge einfach zu halten, einfache Sprache zu verwenden und dabei kurz und korrekt zu sein.

Das Design dieser Seite wurde inspiriert von http://justinjackson.ca/words.html

---

Thanks to b00010111 and Christopher Simpson for this translation. English version here.