Freitag, 9. Januar 2009

News

präsentiert von: entwickler.com
Donnerstag, 3. Juli 2008

About Security #162: Schwachstellensuche: Persistentes XSS (1)

Bisher ging es bei der Suche nach Cross-Site-Scripting-Schwachstellen im Wesentlichen um reflektiertes Cross-Site Scripting. Diese Schwachstellen kann man recht einfach erkennen, da ein eingegebenes Testmuster sofort in der ausgegebenen Seite erscheint. Schwierig wird das bei persistenten Schwachstellen: Dort wird der eingeschleuste Schadcode bzw. das eingeschleuste Testmuster auf dem Server gespeichert und erst später, eventuell in einem ganz anderen Zusammenhang, an die Benutzer ausgegeben. Ab dieser Folge erfahren Sie, wie Sie solche Schwachstellen in Ihrer Webanwendung finden.

Drei Beispiele

Die folgenden drei Fälle sind typische Beispiele für persistentes XSS. Der Einfachheit halber wird im Folgenden nur noch das Testmuster erwähnt, Entsprechendes gilt dann immer auch für den vom Angreifer eingeschleusten Schadcode.

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

  1. Kommentare in einem Blog
    Das in einem Kommentar eingegebene Testmuster wird von der Webanwendung z.B. in einer Datenbank gespeichert und danach zusammen mit dem zugehörigen Blogeintrag ausgegeben. Erfolg die Eingabe auf der Seite des zu kommentierenden Eintrags und wird diese Seite nach Absenden des Kommentars aktualisiert, lässt sich eine XSS-Schwachstelle ebenso wie beim reflektierten XSS sofort erkennen: Das Testmuster erscheint sofort in der Ausgabe.
    Werden die Einträge moderiert, ist diese Erkennung nicht möglich. Erst wenn der Moderator den Beitrag freigeschaltet hat, erscheint das Testmuster in der Ausgabe. Entsprechend ist die Schwachstelle nicht sofort zu erkennen, dafür gibt es mit dem Moderator ein zusätzliches potenzielles Opfer, das noch dazu für die Webanwendung höhere Rechte als ein normaler Benutzer besitzt.
  2. Informationen in einem Profil, z.B. in einem Forum
    Beim Erstellen eines Profils während der Registrierung für ein Forum werden die eingegebenen Daten samt enthaltenen Testmuster meist nur auf dem Server gespeichert und nicht sofort wieder ausgegeben. Erst wenn die betroffene Profilseite explizit aufgerufen wird, erscheint das Testmuster in der Ausgabe. Muss das Benutzerkonto erst durch den Betreiber freigeschaltet werden, ist gar keine sofortige Kontrolle möglich. Wie im vorherigen Beispiel ist in diesem Fall der für die Freigabe zuständige Administrator ein weiteres potenzielles Opfer mit höheren Benutzerrechten.
  3. Einträge in Logfiles
    Ob XSS über Logfile-Einträge möglich ist, kann von einem normalen Benutzer und damit einem potenziellen Angreifer überhaupt nicht direkt geprüft werden. Ob ein Testmuster über ein Logfile in den Webbrowser eines Administrators eingeschleust werden kann, kann nur der jeweilige Administrator prüfen. Der Angreifer hat nur die Möglichkeit, seinen Angriffscode einzuschleusen und auf das Beste zu hoffen. Als Test kann z.B. Code zum Laden eines Bilds von einem unter der Kontrolle des Angreifers stehenden Servers verwendet und dann das Logfile des Servers auf den Aufruf dieses Bilds geprüft werden.
    Statt der Manipulation normaler Parameter ist meist eine Manipulation von HTTP-Header-Feldern, z.B. des Referers, für einen Angriff zielführender. Auch eine Manipulation der IP-Adresse ist einen Versuch wert, da oft davon ausgegangen wird, dass dieser Parameter natürlich eine IP-Adresse enthält und daher auf eine Prüfung verzichtet wird. Ist der Angreifer nicht auf eine Antwort der Webanwendung angewiesen, kann er darin aber auch entweder eine falsche Adresse zur Verschleierung der Herkunft des Angriffs oder Schadcode einschleusen.
Die Suche beginnt...
About Security: Die komplette Serie

Wie bereits bei der Suche nach reflektierten XSS-Schwachstellen in About Security #158 und #159 beschrieben, wird für jeden Parameter ein Testmuster eingegeben. Doch statt nur die jeweils auf die Eingabe folgende Seite nach dem Testmuster zu durchsuchen, muss nun die gesamte Webanwendung durchsucht werden. Dabei kann es durchaus vorkommen, dass eine einmal gemachte Eingabe auf sehr vielen Seiten ausgegeben wird. Besonders häufig wird das z.B. bei Benutzernamen vorkommen: Einmal bei der Registrierung angegeben, erscheint der Name danach z.B. auf jeder personalisierten Seite der Webanwendung, in Benutzerlisten, bei den Kontakten anderer Benutzer, in Beiträgen des Benutzers in Foren usw. – und das unter Umständen in verschieden Varianten, je nach angewandtem Filter. Entsprechend muss jedes Auftreten des Testmusters getrennt auf die Möglichkeit von XSS untersucht werden.

Vorsicht im Administrationsbereich

Außer den normalen Seiten der Webanwendung müssen auch die des Administrationsbereichs auf das Auftauchen des Testmusters geprüft werden. Wie schon bei den Beispielen erwähnt, sind solche Fälle für den Angreifer besonders interessant, da er dabei seinen Schadcode mit höheren Benutzerrechten ausführen lassen kann. Ein etwas untypisches Beispiel dafür ist eine XSS-Schwachstelle in vBulletin: Klickt ein Administrator einen präparierten Link an, kann sogar PHP-Code auf den Server eingeschleust werden.

Die weiteren Schritten zum Finden persistenter XSS-Schwachstellen erfahren Sie in der nächsten Folge.

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 "Schwachstellensuche – III. Angriffe über vom Benutzer gelieferte Daten: XSS"

Kommentare

BASTA!

Konferenzen

BASTA! Spring 2009

BASTA! Spring 2009

23.-27. Februar 2009
Maritim Rhein-Main Hotel Wissenschaftsstadt Darmstadt

Entwicklertage 2009

Entwicklertage 2009

23.-27. Februar 2009
Darmstadt

BASTA! Italia 2009

BASTA! Italia 2009

16.-18. März 2009
Holiday Inn EUR Parco dei Medici, Roma

PHPCon Italia 2009

PHPCon Italia 2009

18.-20. März 2009
Holiday Inn EUR Parco dei Medici, Roma

JAX 09

JAX 09

20.-24. April 2009
Rheingoldhalle Mainz

Eclipse Forum Europe 09

Eclipse Forum Europe 09

20.-24. April 2009
Rheingoldhalle Mainz

webinale 09

webinale 09

25.-27. Mai 2009
Berlin

RailsWayCon

RailsWayCon

25.-27. Mai 2009
Berliner Congress Center, Alexanderplatz, Berlin

Werbung
Top-Jobs

Software & Support Verlag GmbH

Redakteur (m/w), Vollzeit

Endress+Hauser GmbH+Co. KG

Entwickler Datenbanksysteme (m/w)

Software & Support Verlag GmbH

Volontär (w/m) Redaktion, Vollzeit

Signsoft GmbH

Java-Entwickler (m/w)

Software & Support Verlag GmbH

Lektor (m/w), Vollzeit
JAX 09

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

Ruby on Rails

RailsWay Magazin

Ruby on Rails

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

Bücher


hosted by HostEurope