Dienstag, 7. Oktober 2008

News

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

About Security #149: Schwachstellen-Suche: Zustandsinformationen

Die Schwachstellensuche in einer Webanwendung geht weiter: Nachdem alle verfügbaren Informationen zusammen getragen wurden, geht es darum, diese Informationen gegen die Anwendung einzusetzen. Den Anfang machen dabei zustandsbasierte Angriffe.

Zustände in Webanwendungen

Jede Webanwendung hat eine Startseite, von der aus sich die Benutzer über Links auf verschiedene andere Seiten mit verschiedenen Funktionen weiterbewegen. Theoretisch. Denn statt sich von Seite zu Seite bis zu einer bestimmten Seite anhand der Links "durchzuhangeln", können die Benutzer die Unterseiten auch direkt aufrufen: Im Web gibt es keine Möglichkeit, irgend eine Information darüber zu speichern, von welchen Seiten aus auf eine bestimmte Seite gesprungen werden darf und von welchen Seiten aus nicht. Jede Seite wird ohne Informationen darüber ausgeliefert, von wo der Benutzer kam und wohin er gehen kann. Daher wird das Übertragungsprotokoll HTTP auch als zustandsloses Protokoll bezeichnet. Möchte eine Webanwendung die Aktionen eines Benutzers nachverfolgen und miteinander verbinden, muss sie das selbst übernehmen. Daher werden Benutzer oft mit einer Session-ID (Sitzungs-ID) identifiziert, um sie auch nach mehreren Requests wiedererkennen zu können.

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

Ist die Reihenfolge der besuchten Seiten für die Webanwendung von Bedeutung, muss sie sich selbst um die Einhaltung dieser Reihenfolge kümmern. Nichts und Niemand hindert einen Benutzer daran, eine beliebige Seite direkt aufzurufen, z.B. indem er die URL in seinen Browser eintippt oder einen Bookmark-Eintrag aufruft. Was für das normale Surfen völlig ohne Belang ist, kann für Webanwendungen eine Gefahr sein. Das typische Beispiel ist ein Webshop, bei der ein Benutzer Waren in den Warenkorb legt und dann die Seite für die Eingabe der Zahlungsinformationen überspringt, um direkt zum Abschluss der Bestellung zu gelangen. Achtet die Webanwendung nicht auf das Einhalten der korrekten Reihenfolge, hat der Benutzer danach eine Bestellung aufgegeben, ohne das seine Konto- oder Kreditkartendaten erfasst wurden.

Es ist also Aufgabe der Webanwendung, Zustandsinformationen zu verwalten, wenn sie darauf angewiesen ist. Dafür gibt es zwei Ansätze:

  • Die Zustandsinformationen werden auf dem Server gespeichert, die Benutzer werden über eine Session-ID identifiziert.
  • Die Zustandsinformationen werden auf dem Client gespeichert.

Unabhängig davon, welcher Ansatz verfolgt wird, müssen Informationen auf dem Client gespeichert werden - entweder die Zustandsinformationen oder die Session-ID. Dafür stehen drei Methoden zur Verfügung, die im folgenden der Reihe nach untersucht werden: versteckte Formularfelder, Parameter in der URL und Cookies.

Schritt 4: Angriffe auf Zustandsinformationen
Schritt 4a: Versteckte Felder

Um versteckte Felder ging es bereits in About Security #147, jetzt werden die dort gesammelten Informationen verwendet. Die Zustandsinformation kann z.B. in einem Eintrag nach folgendem Muster gespeichert sein:


<input name="id" value="1234" type="hidden">

Die einfachste Möglichkeit, diesen Eintrag zu manipulieren, ist das Speichern der betroffenen Seite in einer Datei, in der dann das 'type="hidden"' gelöscht wird. Außerdem müssen wieder alle relativen Links in passende absolute umgewandelt werden. Danach ist aus dem versteckten Feld ein normales Textfeld geworden, das nach Belieben manipuliert werden kann. Alternativ können die Daten auch nach dem Senden "on the fly" über einen Proxy wie Paros oder ein Tool wie die Firefox-Erweiterung Firebug manipuliert werden. Im folgenden wird zwischen beiden Ansätzen nicht unterschieden: Wenn es heißt "Wird der Parameter manipuliert und das Formular abgesendet..." ist genauso auch "Wird das Formular abgesendet und der Parameter 'on the fly' manipuliert" gemeint.

About Security: Die komplette Serie

Alle gefundenen versteckten Felder müssen daraufhin untersucht werden, wie sich die Webanwendung bei einer Änderung der Werte verhält. Das klassische Beispiel ist hierbei immer noch die Speicherung von Preisen eines Webshops im Formular statt auf dem Server. Wird der entsprechende Parameter manipuliert und das Formular abgesendet, ändert sich auf der nächsten Seite der Warenwert im Warenkorb. Das gleiche gilt entsprechend für versteckte Felder, die den Status eines Benutzers speichern: Wird so ein Parameter geändert und die Webanwendung akzeptiert diese Änderung, ist der Angreifer danach nicht mehr Gast, sondern ein Benutzer, oder aus einem Benutzertyp wird ein anderer. Außerdem kann in versteckten Parameter z.B. auch die letzte besuchte Seite gespeichert werden, um das Einhalten einer gewünschten Reihenfolge sicher zu stellen. Wird so ein Parameter geändert, können Seiten angesprungen werden, die eigentlich zu dem Zeitpunkt nicht zugänglich sein sollten. Um in versteckten Formularfeldern gespeicherte Session-IDs geht es in einem separaten Punkt.

In der nächsten Folge geht es um die Abwehr derartiger Angriffe sowie um Angriffe auf in URL-Parametern übertragene Zustandsinformationen.

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

Kommentare

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

EKON 12

EKON 12

27.-31. Oktober 2008
Congress Centrum, 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

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

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