Cross Site Scripting (XSS)
February 28th, 2007 — bjouWer sucht, der findet. Es ist unglaublich, wieviele große Websites mit einem anerkannten Unternehmen dahinter heute noch für XSS (Was ist XSS? Man konsultiere Wiki oder Heise) anfällig sind. Dabei kann es echt gefährlich werden obwohl es so leicht zu umgehen ist.
Angefangen hat alles damit, dass der Karlsruher Stadtblog meinen BjOG verlinkt hat. Allerdings nicht freiwillig. Was man hier sieht ist eine einfache XSS-Attacke gegen die Website des Stadtblogs, die dann (across-sites) meinen Blog in einem iframe lädt. Das kann böse ausgenutzt werden, wie das Beispiel von Saturn zeigt (Notiz: Hier muss man zunächst auf Saturn.de gehen um sich ein Cookie abzuholen (wenn man noch keines hat), indem man eine Filiale auswählt.) Der Elektronikkette habe ich auch eine bösartige Seite untergejubelt, mehr schlecht als recht an deren Design angepasst und könnte somit z.B. leicht Kreditkarteninformationen von Usern ergattern oder Cookies und damit Usersessions hijacken.
Auch die Frankfurter Allgemeine Zeitung (FAZ) ist vor XSS-Attacken nicht gefeit. Das Unterjubeln gefälschter Seiten oder der Diebstahl von Cookies und das damit verbundene Account Hijacking durch komplettes Umgehen des Authentication Prozesses sind so kein Problem mehr, wie man auch bei Die Welt sehen kann. Die dort gezeigten Cookie Credentials hätte ich ohne Probleme an mich senden lassen können. Hier war der Aufwand jedoch etwas größer, da die Welt den User-Suchstring augenscheinlich nur per POST übermittelt, was auch gut so ist, denn das verhindert zumindest URL-basierte XSS-Attacken. Leider kann man das bei der Welt jedoch auch umgehen, indem man aus dem Code die nötigen POST Variablen extrahiert und über die URL als GET interpretieren lässt. Bugfix: Clientinformationen nur als HTTP POST annehmen…
Wie man sieht ist XSS ein seriöses Problem, dem leider nicht so viel Aufmerksamkeit zukommt wie es sollte. Dabei reicht es doch schon, die Inputdaten von Usern entsprechend zu filtern. Die oben genannten Beispiele sind bei weitem nicht die einzigen, viele weitere große Betreiber, die ich hier jedoch nicht liste, sind davon betroffen. Dies soll nur ein kleiner Warnschuss sein. Nach der Veröffentlichung dieses Beitrages habe ich umgehen die Websitebetreiber informiert. Ich bin mal gespannt, wielange es braucht, bis die ersten reagieren.
edit: Falls die Lücken geschlossen werden sollten, hier die Beweis Screenshots:
edit: Wow, das ging schnell, der stadtblog is schon gefixt!
March 3rd, 2007 at 2:13 am
jo, sonst noch keine responses von den anderen?
March 4th, 2007 at 11:02 pm
doch, Stadtblog und Saturn haben sich gemeldet, ersterer war nach 20 min gefixt, saturn.de nach etwa 2 Stunden. Welt und FAZ scheren sich nicht…
March 6th, 2007 at 1:18 am
Nette Beispiele, seht instruktiv – vor allem weil viele noch klappen. Dabei sollte ja jedem Webentwickler eines mit in die Wiege gelegt werden: All Input is bad.
(All you base are belong to us!)
March 6th, 2007 at 1:19 am
P.S. Deine Systemzeit läuft entweder nicht auf GMT, oder Du hast noch Sommerzeit. Such Dir eins aus ..
March 6th, 2007 at 12:26 pm
danke, lag am wp setup. fixed.
March 30th, 2007 at 12:31 am
Es ist insbesondere wichtig, nicht nur den Input von Usern zu filtern, sondern auch auf dem ausgehenden Datenstrom einen Filter einbauen. So ist gesichert, das alle Daten die von Server zum Benutzer gechickt werden auch korrekt sind. Momentan machen das auch die wenigsten Content-Provider. Und hier isr dein Browser: %3Cscript%3Edocument.write%28navigator.userAgent%29%3B%3C/script%3E. Mann binn ich fies.
March 30th, 2007 at 12:32 am
document.write(navigator.userAgent);
March 30th, 2007 at 12:33 am
document.write(navigator.userAgent);
March 30th, 2007 at 12:35 am
na ja, wohl doh nicht.
P.S. Die Systemzeit stimmt wieder nicht. Mittlerweise ist Sommerzeit. Greetings aus Amsterdamm …
January 1st, 2012 at 4:50 pm
Hiya, I’m really glad I’ve found this info. Nowadays bloggers publish only about gossips and net and this is actually irritating. A good web site with exciting content, that is what I need. Thanks for keeping this web site, I will be visiting it. Do you do newsletters? Can’t find it.