Freitag, 25. Juli 2008

News

präsentiert von: entwickler.com
Donnerstag, 1. Mai 2008

About Security #153: Schwachstellen-Suche: URL-Jumping

Bei der Beschreibung der Schwachstellen-Suche in Webanwendungen und im Besonderen bei der Suche nach möglichen zustandsbasierten Angriffen, geht es in dieser Folge um das URL-Jumping. Beim URL-Jumping verlässt ein Angreifer die vorgesehene Reihenfolge der besuchten Seiten und nutzt Funktionen, die eigentlich für ihn zu dem Zeitpunkt noch gar nicht zugänglich sein sollten.

Ursache des Problems ist die bereits in About Security #149 erwähnte Zustandslosigkeit von HTTP. Für die folgenden Erklärungen wird des Öfteren ein Beispiel benötigt, das hier einmal zentral definiert wird.

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

Beispiel: Ein Webshop

Die zu untersuchende Webanwendung soll ein Webshop sein. Ein normaler Besuch läuft für einen neuen Kunden dann folgendermaßen ab:

  1. Durchsuchen des Katalogs nach interessanten Artikeln
    http://www.shop.example/katalog.cgi
  2. Auswählen eines Artikels, d.h. Hinzufügen eines Artikels zum Warenkorb
    http://www.shop.example/hinzufuegen.cgi
  3. ggf. Suche nach weiteren Artikeln, die ebenfalls dem Warenkorb hinzugefügt werden
  4. Prüfen der Bestellung
    http://www.shop.example/bestellen.cgi
  5. Eingeben der persönlichen Daten, z.B. der Lieferadresse
    http://www.shop.example/anmelden.cgi
  6. Eingeben der Zahlungsinformationen
    http://www.shop.example/zahlen.cgi
  7. Abschließen der Bestellung
    http://www.shop.example/abschluss.cgi

Kann ein Angreifer vom Eingeben der persönlichen Daten in Schritt 5 direkt zum Abschluss der Bestellung in Schritt 7 springen, erhält er seine Bestellung evtl., ohne dafür zahlen zu müssen.

Schritt 4d: URL-Jumping

Dieses Beispiel beschreibt nur einen von vielen möglichen Fällen, bei denen das Überspringen von Schritten unerwünschte Folgen hat. Weitere Beispiele sind z.B. das Einloggen in eine Webmail-Anwendung vor dem Lesen einer E-Mail oder das Anmelden bei einem Forum vor dem Veröffentlichen einer Nachricht. Beim URL-Jumping sucht der Angreifer nach einer Abfolge von URLs, die in einer bestimmten Reihenfolge durchlaufen werden müssen, und versucht dann, diese Reihenfolge zu umgehen.

Suche nach Schwachstellen

Der erste Schritt beim Suchen nach einer URL-Jumping-Schwachstelle besteht darin, sich einen Überblick über die zu besuchenden Ressourcen und deren Reihenfolge zu verschaffen. Die im ersten Schritt gesammelten Informationen, insbesondere die dabei aufgebaute Sitemap (siehe About Security #144), liefert dafür die ersten Ansatzpunkte. Gibt es Folgen von Seiten oder Funktionen, die in einer bestimmten Reihenfolge aufgesucht werden müssen?

About Security: Die komplette Serie

Wird eine verdächtige Folge gefunden, wird sie zuerst wie ein normaler Benutzer durchlaufen. Dabei werden außer der Reihenfolge der besuchten Seiten auch die übergebenen Parameter protokolliert. Danach wird von dieser Reihenfolge abgewichen: Die verschiedenen Seiten werden gezielt außerhalb der normalen Reihenfolge aufgerufen und das Ergebnis geprüft. Gibt es aufschlussreiche Fehlermeldungen (z.B. "Bitte erst die Benutzerdaten eingeben!") oder sind bestimmte Seiten nicht erreichbar? Sollte es keine Fehlermeldungen geben und alle Seiten sind in beliebiger Reihenfolge aufrufbar, kann das zwei Gründe haben: Entweder die Reihenfolge ist für die Benutzung der Webanwendung entgegen dem ersten Anschein doch bedeutungslos, dann sind entsprechende Angriffe zwecklos. Oder die Reihenfolge ist von Bedeutung, wird aber von der Webanwendung nicht geprüft, geschweige denn erzwungen. In diesem Fall muss ein entsprechender Schutz nachgerüstet werden. Wie das funktioniert, erfahren Sie ab der nächsten Folge.

Ein Angriff

Im Folgenden wird davon ausgegangen, dass die Reihenfolge, in der die Seiten aufgerufen werden, für die Webanwendung von Bedeutung ist und das Einhalten dieser Reihenfolge auch geprüft wird. Eine Möglichkeit, um URL-Jumping zu verhindern, besteht darin, die Adresse der zuvor tatsächlich besuchten Seite mit der Adresse der Seite zu vergleichen, die im Ablauf hätte besucht werden müssen. Im Beispiel würde also beim Aufruf von abschluss.cgi geprüft, ob der Benutzer davor auf zahlen.cgi war, und dort würde geprüft, ob er von anmelden.cgi kommt usw..

Um die zuvor besuchte Seite zu ermitteln, gibt es drei Möglichkeiten:

  1. Die Adresse der jeweiligen Seite oder eine entsprechende ID wird in einem versteckten Formularfeld oder einem URL-Parameter gespeichert.
  2. Die Adresse der jeweiligen Seite oder eine entsprechende ID wird in einem Cookie gespeichert.
  3. Die Adresse, von der der Benutzer kommen sollte, wird mit dem Wert des REFERER-Felds des HTTP-Headers verglichen.

Das und wie versteckte Formularfelder und URL-Parameter manipuliert werden können, wurde bereits in About Security #149 und #150 beschrieben. Das dort Geschriebene gilt hier entsprechend. Dasselbe gilt für in Cookies gespeicherte Daten, wie in About Security #151 und #152 beschrieben. Der einzige Unterschied zwischen dem ersten und zweiten Ansatz ist der: Cookies können nicht direkt im (normalen) Browser manipuliert werden und machen den Angriff minimal schwieriger.

Wie sicher die Nutzung des REFERER-Headers ist und welche Gegenmaßnahmen es gegen solche Angriffe gibt, erfahren Sie in der nächsten Folge von About Security.

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

Ihre Meinung ist uns wichtig!
Mobile Computing Heute & Morgen!
Nehmen Sie an unserer Umfrage zum Thema Mobile Computing in Deutschland teil und nutzen Sie die Chance eine Casio Exilim EX-Z1050-Digitalkamera zu gewinnen!

Konferenzen

BASTA! 2008

BASTA! 2008

22.-26. September 2008
Rheingoldhalle, Mainz

SQLCON 2008

SQLCON 2008

22.-26. September 2008
Rheingoldhalle, Mainz

IPC 2008

IPC 2008

27.-31. Oktober 2008
Rheingoldhalle, Mainz

AJAX IN ACTION 2008

AJAX IN ACTION 2008

28.-31. Oktober 2008
Rheingoldhalle, Mainz

EKON 12

EKON 12

28.-31. Oktober 2008
Congress Centrum, Mainz

W-JAX 2008

W-JAX 2008

3.- 7. November 2008
ArabellaSheraton Hotel München

SOACON 2008

SOACON 2008

3.- 7. November 2008
Arabella Sheraton Hotel, München

JAX Asia 2008

JAX Asia 2008

25.-28. November 2008
Singapore, Kuala Lumpur, Jakarta

Werbung
Top-Jobs

OLYMPUS EUROPA Holding GmbH

Web-Entwickler (m/w)

Hueber Verlag GmbH & Co. KG

Webdesigner/ Webprogrammierer (m/w)

Gebit Solutions

Java Profis gesucht (m/w)

Software & Support Verlag GmbH

Volontär (w/m) Redaktion, Vollzeit

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

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