Kein Schweizer

Erst kürzlich hat Google den selbst entwickelten Schwachstellenscanner Skipfish freigegeben. Nun folgt mit Jarlsberg ein weiteres Werkzeug, das Webentwickler und Sicherheitsexperten für spezifische Gefahren und Angriffe auf Webapplikationen sensibilisieren soll.

In Pocket speichern vorlesen Druckansicht 1 Kommentar lesen
Lesezeit: 4 Min.
Von
  • Jürgen Bilberger
Inhaltsverzeichnis

Bekannt ist Jarlsberg bisher hauptsächlich als norwegischer Schnittkäse im Supermarktkühlregal. Aufgrund seiner zahlreichen Löcher diente er als Namenspatron von Googles kürzlich veröffentlichtem Codelab. Es handelt sich dabei um ein Tutorial zur Demonstration von Schwachstellen in Webapplikationen. Entwickler nehmen die Perspektive von Angreifern ein und lernen so die Vorgehensweise der anderen Seite kennen.

Die Basis bildet eine kleine Blogging-Anwendung: Benutzer können sich ein Profil anlegen und anschließend damit an der Applikation anmelden. Im internen Bereich dürfen sie dann ihre Benutzerdaten ändern, kurze Texte veröffentlichen, sowie über eine Upload-Funktion Dateien zum Herunterladen bereitstellen. Mehr ist nicht notwendig, um einen Großteil der gängigen Sicherheitslücken einzubauen – in diesem Fall ausnahmsweise absichtlich.

Der Nutzer soll lernen, wie man eine Schwachstelle in einer Webanwendung findet, sie ausnutzt und wie man diese Sicherheitslücke verhindert. Von Cross-Site Scripting (das Einschleusen von Scriptcode) bis zur Remote Code Execution (Ausführen von Schadcode auf dem Server) sind nahezu sämtliche möglichen Auswirkungen von Webschwachstellen vertreten. Um den Lerneffekt zu unterstützen, gehört zum Jarlsberg-Projekt neben der verwundbaren Applikation auch eine ausführliche Online-Dokumentation. Geordnet nach Schwachstellen erfolgt zunächst jeweils eine kurze Erklärung, worum es bei der ausgewählten Kategorie geht.

Falls nicht klar ist, worauf der Angriff über die Schwachstelle zielt, erklärt dies ebenfalls die Dokumentation. So wird etwa nach der Beschreibung der Schwachstellenkategorie „Path Traversal“ die Aufgabe gestellt, den Inhalt der Datei „secret.txt“ auszulesen. Falls es einem Anwender nicht auf Anhieb gelingen sollte, eine Schwachstelle auszunutzen, lassen sich in der Dokumentation Tipps und auch die Lösung einblenden.

Ein Ratschlag für die Ausnutzung der Path-Traversal-Schwachstelle zum Beispiel lautet, ein alternatives Tool anstelle des Browsers zu verwenden. Die meisten Browser interpretieren die Zeichenfolge „../“ in Pfadangaben, bevor sie die Anfrage an den Webserver schicken. Die Eingabe der URL „http://127.0.0.1:8008/234290253/../secret.php“ im Firefox führt zu einem GET-Request auf „127.0.0.1:8008/secret.php“. Der Webserver liefert die angeforderte Datei dadurch nicht aus. Mit dem Kommandozeilentool cURL oder anderen Tools lassen sich derartige Requests stellen und die Schwachstelle erfolgreich ausnutzen.

Neben Jarlsberg gibt es weitere, vorsätzlich „löchrige“ Webanwendungen von anderen Entwicklern oder Herstellern, mit unterschiedlichen Ansprüchen. Bekannt sind unter anderem die Onlinebanking-Applikation „hacme bank“ von Foundstone und das WebGoat-Projekt des Open Web Application Security Project (OWASP). Einige weitere sind in dem OWASP Broken Web Applications Project zusammengestellt. Neben der Verwendung als Lernobjekt dienen solche Anwendungen häufig dazu, Audit-Werkzeuge für Webapplikationen zu testen. Für diesen Zweck ist Jarlsberg nur bedingt geeignet. So beendet sich der Serverdienst beispielsweise bei jeder Manipulation der Benutzer-ID.

Cross-Site Scripting, laut OWASP-Top-Ten-Liste die zweitgrößte Gefahr für Webanwendungen, ist eine der in Jarlsberg eingebauten Schwachstellen.

Die Inbetriebnahme von Jarlsberg gestaltet sich benutzerfreundlich. Es gibt zwei Möglichkeiten: Herunterladen und Ausführen der Python-Anwendung auf dem lokalen System oder online über Googles App Engine. Bei der Onlinevariante bekommt jeder Benutzer eine eigene Instanz der Jarlsberg-Anwendung, sodass sich mehrere Benutzer beim Angreifen nicht gegenseitig in die Quere kommen können. Um die Applikation lokal zu betreiben, muss lediglich Python auf dem System vorhanden sein. Die wenige Kilobyte große Jarlsberg-Applikation startet einen eigenen Serverdienst, sodass man keine Web-, Applikations- oder Datenbankserver zusätzlich installieren muss.

Den Webserverdienst haben die Entwickler ebenfalls in Python geschrieben. In realen Anwendungen kommen hier in den meisten Fällen Standard-Serverapplikationen wie der Apache-Webserver oder der IIS von Microsoft zum Einsatz. Im Backend setzt man üblicherweise Datenbanken ein. Auch hier macht Jarlsberg eine Ausnahme. Die große Schwachstellenkategorie der SQL-Injections findet daher keine Berücksichtigung.

Diese Unterschiede verdeutlichen den Einsatzzweck von Jarlsberg als Schulungsanwendung: Den Benutzern wird demonstriert, wie Webschwachstellen aussehen können und wie man sie unter den gegebenen Umständen ausnutzen kann. Es besteht kein Anspruch, eine möglichst realitätsnahe Umgebung nachzubilden. Nach der schnellen Inbetriebnahme kann man sich spielerisch mit dem Finden und Ausnutzen von Webapplikationsschwachstellen auseinandersetzen und sein Bewusstsein für die Sicherheit von Webanwendungen schärfen.

ist Security-Berater bei Cirosec in Heilbronn. (ur)