Sonntag, 12. Februar 2012 |
Die Suche nach Schwachstellen in AJAX-Clients wird im Folgenden an einem Beispiel beschrieben: Eine Nachrichtenseite kombiniert Informationen aus verschiedenen RSS-Feeds.
Die Webanwendung läuft auf dem Server beispiel.example
und besteht aus zwei Teilen: Anwendungsressourcen wie HTML-Seiten,
Skripts
usw. und einem Proxy, um über XMLHttpRequests auf andere Domains
zugreifen zu können. Damit ergeben sich für die Suche nach
Client-Schwachstellen vier Schritte:
N E U ! Security
aktuell
Täglich aktuelle Security-Infos!
beispiel.example)
und einen nicht vertrauenswürdigen (alle anderen Server) Teil
aufgeteilt werden. Nicht vertrauenswürdige Daten und Skripte müssen
geprüft werden, bevor sie in den Browser geladen werden.Als Beispiel soll eine Nachrichtenseite, die Informationen aus verschiedenen RSS-Feeds zusammenstellt, dienen:
feed an, der
dann von einer Funktion wie GetRSSFeed(feed)
über den Proxy angefordert wird.document.getElementById().innerHTML
und document.write(). Hier werden darüber die
Informationen aus den RSS-Feeds in das DOM integriert.
Schon der Test einer so einfachen Anwendung kann ziemlich aufwändig werden. Wie man sich leicht vorstellen kann, verschärft sich das Problem, wenn mehrere Quellen zu einem Mashup verbunden werden. Was passiert, wenn eine solche Newsseite im Rahmen eines Mashups in eine andere Seite integriert wird? RSS-Feeds dürfen keinen JavaScript-Code enthalten, also kann er rigoros ausgefiltert werden. Würde aber der JavaScript-Code aus der Newsseite ausgefiltert, würde sie nicht mehr funktionieren. Entweder, man vertraut dem Anbieter der Newsseite, bindet sie unverändert ein und fängt sich dadurch im Ernstfall dessen Schwachstellen ein, oder man muss bei der Filterung des JavaScript-Codes mehr Aufwand betreiben.
Um alle von einer AJAX-Anwendung genutzten Ressourcen zu finden, müssen im Client alle vorhandenen Links und Funktionen rekursiv aufgerufen werden: Werden z.B. beim Aufruf einer Funktion nach einem XMLHttpRequest weitere Funktionen zur Verfügung gestellt, müssen auch diese aufgerufen werden, usw. usf.. Werden Webservices genutzt, erleichtert das die Arbeit: Webservices stellen i.A. eine Beschreibung aller verfügbaren Methoden und deren Parameter und Rückgabewerte in einer WSDL-Datei (Web Services Description Language) zur Verfügung, die über ein UDDI-Verzeichnis (Universal Description, Discovery and Integration) abgefragt werden kann. Wenn man weiß, welchen Webservice eine Anwendung nutzt, kann man darüber alle verfügbaren Methoden etc. ermitteln.
Außerdem wird im AJAX-Client natürlich wie im normalen Client nach Eingabebeschränkungen, versteckten Werten usw. gesucht.
Nachdem alle Ressourcen und Parameter ermittelt wurden, geht es bei der Schwachstellensuche in AJAX-Anwendungen genauso weiter wie bei der Untersuchung normaler Webanwendungen: Die gesammelten Informationen werden auf Hinweise auf mögliche Schwachstellen untersucht. Das ist auch das Thema 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!
About Security – Übersicht zum aktuellen Thema "Schwachstellensuche – I. Informationen sammeln"