Web Application Security

Den Lücken auf der Spur

Wie Scanner arbeiten

In der Regel arbeitet ein Web-Applikations-Scanner in zwei aufeinander aufbauenden Schritten: Zunächst werden die Struktur und sämtliche Seiten innerhalb einer Anwendung erfasst. Für das so genannte Crawlen muss der Scanner in der Lage sein, Links zu weiteren Seiten zu folgen, auch wenn sie dynamisch, beispielsweise in Form eines Javascript-Menüs, erzeugt werden. Außerdem hat das Tool zu erkennen, wann es in einen Zyklus läuft, sprich: die gleiche Seite wieder und wieder besucht. Für schwierige Fälle bieten die meisten Produkte einen manuellen Crawl-Modus an: Der Auditor kann mit einem Browser selbst durch die Applikation klicken und so definieren, welche Seiten und Bereiche vom Scanner überprüft werden sollen.

Netz-Scanner setzen auf OS- und Dienste-Ebene an, während Web-Applikations-Scanner auf Applikationsebene via HTTP(S) arbeiten. (Quelle: Cirosec)
Netz-Scanner setzen auf OS- und Dienste-Ebene an, während Web-Applikations-Scanner auf Applikationsebene via HTTP(S) arbeiten. (Quelle: Cirosec)

Im zweiten Schritt des Scan-Vorgangs erfolgt die eigentliche Schwachstellensuche. Jede Seite, die der Scanner während des Crawl-Vorgangs erfasst hat, wird einzeln und wiederholt untersucht. Dazu werden alle Formularfelder und Parameter innerhalb dieser Seite mit bestimmten Angriffsmustern vorbelegt und anschließend an die Web-Applikation geschickt, um deren Reaktion auf die Angriffsmuster auszuwerten. An der Antwort lässt sich beispielsweise anhand des HTTP-Statuscodes (etwa: "200 OK" oder "500 Internal Server Error") oder durch Fehlermeldungen im HTML-Body erkennen, ob die Applikation auf den Angriff "hereingefallen" ist.

Mit guten Produkten können nicht nur Web-Applikationen, sondern auch Web-Services auf Schwachstellen überprüft werden. Das Vorgehen ist ähnlich, allerdings entfällt der erste Schritt des Crawlings, da sich die zur Verfügung stehenden Funktionen aus der Web-Service-Definition, der WSDL-Datei, entnehmen lassen. Die Schwachstellen hingegen können bei Web-Services die gleichen Auswirkungen haben wie bei Web-Applikationen.