Qualitätssicherung

Testen – ganz sicher?

Kurz vor Ende des Trainee-Programms ergab sich für mich die glückliche Gelegenheit, zusammen mit einem geübten Penetration Tester, an der sicherheitstechnischen Prüfung zweier Web-Applikationen mitarbeiten zu können. In dem einen Fall handelte es sich um eine intern genutzte Verwaltungssoftware eines großen Logistikunternehmens, im anderen um ein Portal zum Verwalten und Buchen von Mietobjekten.

In beiden Fällen standen uns vorab keine oder nur sehr wenige Informationen über die technischen Spezifikationen der Anwendungen zur Verfügung. Außerdem ließ der veranschlagte Testzeitraum von jeweils einer Woche wenig Möglichkeiten für das Ausarbeiten aufwendiger Testabläufe. In so einem Fall ist exploratives Testen die sinnvollste Teststrategie und bei Black-Box Penetration Tests die übliche Vorgehensweise. Mit Ralf Poggenpohl stand mir ein sehr erfahrener Tester zur Seite,  der ein hervorragendes Gespür dafür besitzt, an genau den richtigen Stellen der Applikation „auf Jagd“ zu gehen – und meistens auch fündig zu werden.

Alle Daten in Sicherheit?
Da mein Gespür noch nicht so ausgeprägt ist, übernahm ich erstmal die systematischen, meist Tool-basierten Analysen. Zuerst schaut man sich mittels eines Port-Scanners an, welche Dienste der Applikations-Server nach außen anbietet und leitet daraus ggf. weitere Angriffsvektoren ab – ein ungeschützter Datenbank-Dienst mit aktivem Standardzugang kann hier zum Beispiel eine Menge Daten preisgeben. Danach untersucht man die Konfiguration des Web-Servers: Wird für alle Teile der Applikation, bei denen sensible Daten übertragen werden, eine geeignete Verschlüsselung eingesetzt? Gelten die eingesetzten Verschlüsselungsverfahren als sicher? Werden entsprechende Header gesetzt, die das Einbetten der Webseite in andere Seiten verhindert? Viele solcher Fragestellungen lassen sich mittels Scannern wie Nikto oder Skipfish überprüfen. Das eigentliche Kernstück der Analyse ist aber die genaue meist manuelle Untersuchung der implementierten Geschäftsprozesse und Abläufe.

Dazu kommt u.a. ein Web-Proxy zum Einsatz, bei dem sich jeder HTTP-Aufruf mitschneiden und manipulieren lässt. Einige dieser Proxys, wie der OWASP ZAP oder Burp-Suite, verfügen auch über die Möglichkeit, bestimmte Parameter automatisiert auf Code-Injections, sog. Path-Traversals oder andere Schwachstellen zu testen. Hierbei wird z. B. geprüft, ob übergebene Sonderzeichen in der Server-Antwort ungefiltert zurückgegeben werden. Bei einfachen Aufrufen kann einem das eine Menge Arbeit abnehmen, man erhält aber gerade bei kaskadierten Funktionsaufrufen keine verlässlichen Ergebnisse. So bleibt trotz der vielen verfügbaren Tools einiges an Handarbeit. Besonders spannend ist die Autorisierungsprüfung. Zwar stehen Nutzern mit eingeschränkten Rechten keine sensiblen Funktionen in der grafischen Oberfläche zur Auswahl. Hat man aber einmal die URL solcher Funktionen identifiziert, lassen diese sich oft ohne entsprechende Rechte ausführen. So gelang es uns die Benutzerverwaltung aufzurufen und uns zum Applikations-Administrator zu befördern oder Passwort-Hashes aus einer Datenbankschnittstelle abzugreifen.  In anderen Fällen reicht schon das Ändern einer mitgeführten ID im HTTP-Aufruf, um die Daten anderer Nutzer einsehen und manipulieren zu können. Die unzureichende Inhaltsprüfung einer Upload-Funktion lässt uns eine Web-Shell hochladen, mit der wir sensible Konfigurationsdaten und Zugänge des Web-Frameworks auslesen können.

Ich habe bei unseren Untersuchungen immer die Möglichkeit, Ralf per Desktop-Sharing über die virtuelle Schulter zu schauen und lerne so neben vielen technischen Kniffen eine wirkungsvolle Vorgehensweise.

Mein nächster Schritt in Richtung Zukunft
Am Ende können wir in unseren Berichten einige kritische Funde präsentieren, die den Kunden hoffentlich dabei helfen, die Sicherheit ihrer Anwendungen effektiv verbessern zu können. Ich persönlich hatte eine Menge Spaß. Die Arbeitstage vergingen wie im Fluge und ich lernte jeden Tag eine Menge dazu. So freue ich mich schon auf die nächsten spannenden Projekte, die mich dem Ziel, Penetration-Tester zu werden und selbständig Projekte betreuen zu können, ein Stück näher bringen.