Warum XSS böse ist

Published 27 June, 2012

Bei XSS handelt es sich um das Cross-Site-Scripting welches das “einschleusen” von HTML oder Javascript in eine Webseite beschreibt. Es handelt sich dabei um eine der einfachsten Möglichkeiten um Webseiten anzugreifen.

Diese Sicherheitslücke kann etwa so entstehen: echo 'Ihre Suchanfrage nach ' . $_GET['term'] . ' ergab leider keinen Treffer.';

Eine normale Suchanfrage könnte nun so aussehen:
http://webseite/suche?term=Foobar Ihre Suchanfrage nach Foobar ergab leider keinen Treffer.

Ein Request von einem Angreifer könnte jedoch folgendes Ergebnis erzielen:
http://webseite/suche?term=<iframe src="http://andereWebseite"> Ihre Suchanfrage nach <iframe src="http://andereWebseite"> ergab leider keinen Treffer.

Der Browser würde nun den iframe-Tag auswerten und den Inhalt einer externen Webseite anzeigen. Dies wäre nun eine non-persistente XSS-Lücke, da der “Schadcode” nicht auf dem Server gespeichert wird, sondern lediglicht reflektiert wird.

Die hier gezeigt Lücke ist (leider) auf sehr vielen Webseiten in genau dieser Form vorhanden. Dies liegt vermutlich daran, dass die meisten Administratoren/Webentwickler die Gefahren von solchen non-persistenten XSS-Lücken weit unterschätzen.

Man braucht zum Angreifen genau diesen Link, wo der eingeschleuste Code drin steht? Das ist wie, als würde ich die Kombination eines Zahlenschlosses knacken, wenn ich schon den Code vorher weiß.
Das ist soweit richtig. Aber seien wir mal ehrlich…wer achtet heute noch darauf, was in seiner Adresszeile im Browser steht? Nachdem Webseiten vor 20 Jahren damit angefangen haben Session-IDs über die URL weiterzugeben gucken sich die meisten nurnoch maximal den Server-Host an. Lesbare URLs werden doch sowieso nurnoch für die Suchmaschinen-Bots generiert ;-) Also warum sind XSS-Lücken nun also so ein hohes Sicherheitsrisiko?

Stellen wir uns ein größeres (börsennotiertes) Unternehmen vor, welches tausende von Besucher am Tag auf der Webseite hat. Nun findet jemand dort eine (non-persistente) XSS-Lücke und schreibt darüber einen gefakten News-Eintrag, welcher das Unternehmen als Insolvent betitelt. Dieser Link (mit bit.ly am besten noch etwas verschönert) wird nun an verschiedene große Zeitungen (irgendeine Zeitung wird es sicherlich abdrucken – dort sind schon ganz andere Dinge fälschlicherweise reingekommen) und vielleicht an den ein oder anderen Aktieninhaber geschickt. Bis es auffällt, dass der Newseintrag nur gefaked ist, oder die Lücke gar gefixt ist, kann viel Zeit vergehen, in der die Aktien durchaus etwas Wert verlieren können.

Ich erinnere mich noch grau an den Fall, dass auf der Webseite des Bundestages eine XSS-Lücke aufgetaucht ist und anschließend ein (auf den ersten Blick scherzhafter) Artikel erschienen ist. Frau Merkel hat damals Linux zum Pflichtbetriebssystem aller Deutschen gemacht ;-)

Deshalb: Schätzt auch das Risiko von non-persistenten XSS-Lücken nicht zu niedrig ein.

Achtung: Das “testen” fremder Systeme auf Sicherheitslücken ist durchaus illegal! Führt solche Tests lediglich auf eigenen System, bzw. mit ausdrücklicher Genehmigung/Aufforderung des Besitzers durch.