Freitag, 9. Januar 2009 |
Die ersten Schritte bei der Suche nach persistenten Cross-Site-Scripting-Schwachstellen wurden in About Security #162 beschrieben: Für jeden Parameter wird ein Testmuster eingegeben, danach in der gesamten Webanwendung nach dessen Auftreten gesucht. Dabei muss insbesondere auch der Administrationsbereich untersucht werden, sofern einer vorhanden ist. Das Gleiche gilt für alle Bereiche, die erst nach einer besonderen Authentifizierung zugänglich sind. Immer, wenn ein normaler Benutzer XSS-Code von Benutzern mit höheren Rechten ausführen lassen kann, besteht eine besonders große Gefahr.
Wie schon erwähnt, müssen die eingegebenen Testmuster auf jeder Seite der Webanwendung gesucht werden. Daher ist es wenig hilfreich, einfach ein Testmuster in jeden erreichbaren Parameter einzugeben und dann hinterher danach zu suchen. Dadurch erhält man zwar sehr viele Fundstellen für dieses Testmuster, weiß aber nicht, über welchen Parameter es an die jeweilige Fundstelle gelangt ist. Für dieses Problem bieten sich zwei Lösungswege an:
N E U ! Security
aktuell
Täglich aktuelle Security-Infos!
Im Allgemeinen ist der zweite Ansatz deutlich effektiver, da man dabei im Wesentlichen mit zwei Durchläufen der Webanwendung auskommt: Beim ersten Durchlauf werden alle Parameter mit dem Testmuster gefüttert, beim zweiten das Testmuster in allen ausgegebenen Seiten gesucht.
Nicht immer reicht es aus, Testmuster einfach auf jeder Seite der Webanwendung in jeden Parameter einzugeben. Oft sind mehrere Schritte, verteilt auf mehrere Seiten, notwendig, bis eine Eingabe tatsächlich von der Webanwendung gespeichert wird. Typische Beispiele dafür sind Registrierungsfunktionen für neue Benutzer, Einkäufe über einen Warenkorb oder auch das Durchführen von Überweisungen. Um wirklich jede mögliche Schwachstelle zu finden, müssen in solche Fällen die kompletten Prozeduren bis zu ihrem Ende durchgegangen und die entsprechenden Felder ausgefüllt und Aktionen ausgelöst werden.
Als Beispiel soll wieder einmal der in About Security #153 beschriebene Webshop dienen. Beim Test des Webshops reicht es nicht aus, einfach in jedes vorhandene Eingabefeld ein Testmuster einzugeben, die Bestellung muss auch korrekt abgeschlossen werden. Meist gibt es je nach aktuellem Zustand auf der Folgeseite unterschiedliche Eingabefelder: Ein bekannter und identifizierter Benutzer muss seine Zahlungsinformationen nicht erneut eingeben, kann aber vielleicht eine alternative Lieferadresse angeben. Vielleicht gibt es auch auf der letzten Seite die Möglichkeit, eine Nachricht an den Shopbetreiber zu schicken. Je nachdem, ob die Bestellung abgebrochen oder erfolgreich abgeschlossen wurde, könnten dabei andere Eingabefelder erscheinen oder die Eingaben anders verarbeitet werden. All diese Möglichkeiten müssen bei der Suche nach XSS-Schwachstellen berücksichtigt werden.
Erlaubt die Webanwendung den Up- und/oder Download von Dateien, müssen diese ebenfalls als mögliche Einfallstore für persistentes Cross-Site Scripting betrachtet und entsprechend geprüft werden. Insbesondere HTML- und Textdateien laden natürlich dazu ein, Scriptcode einzufügen. Aber auch andere Dateitypen können eine Gefahr sein. Dürfen Bilder, z.B. zur Darstellung von Avataren, hochgeladen werden, kann in einer solchen Datei enthaltener Scriptcode Benutzer des Internet Explorers und evtl. auch anderer Browser angreifen. Manche Browser, insbesondere der IE, führen in angeblichen Bildern gefundenen Scriptcode aus, statt ein defektes Bild zu melden. Auch andere Dateitypen können Scriptcode enthalten. Ein gutes Beispiel dafür sind Flash-Dateien, wie es vom Orkut-XSS-Wurm demonstriert wurde (siehe About Security #141). Die Up- und Download-Funktionen müssen daher für jeden zulässigen Dateityp überprüft werden.
Die restlichen Schritte zum Finden persistenter XSS-Schwachstellen werden in der nächsten Folge beschrieben.
Wenn Sie Fragen oder Themenvorschläge haben, können Sie diese gerne an die angegebene E-Mail-Adresse senden oder im Security-Forum einbringen!
About Security – Übersicht zum aktuellen Thema "Schwachstellensuche – III. Angriffe über vom Benutzer gelieferte Daten: XSS"