Directory TraversalAls Directory Traversal (oder auch Forceful Browsing) bezeichnet man eine Sicherheitslücke in einem Webserver oder einer Webanwendung, bei der durch Eingabe von URLs auf Dateien und Verzeichnisse zugegriffen werden kann, die dafür eigentlich nicht vorgesehen waren. Mögliche Ziele sind Dateien mit sensiblen Daten wie Adressdaten, Kreditkartennummern oder auch Passwörtern. DetailsNormalerweise sollte von außen nicht auf Dateien eines Webservers außerhalb des Web-Verzeichnisses oder dessen Unterverzeichnisse zugegriffen werden können. Bei einem Directory-Traversal-Angriff versucht ein Angreifer nun mittels manipulierter Pfadangaben auf Dateien außerhalb dieser Verzeichnisse zuzugreifen. Grundlegend für diesen Angriff ist, dass man sich mit der Angabe von DurchführungDurch Analyse der Webanwendung versucht der Angreifer, Informationen zu gewinnen, wie Parameter und aufgerufene URLs ausgewertet werden. Dies können sowohl dynamische Formulardaten, die ungenügend geprüft werden, als auch statische Dokumente sein. Manipulationen mit statischen DokumentenIm Falle von Dokumenten ist die Vorgehensweise recht einfach. Befindet sich z. B. ein PDF-Dokument mit dem Dateinamen „Jahresbericht_2008.pdf“ auf dem Server und wird dieses durch die URL Angriffsziel können auch Backups oder alte Versionen von Skripten sein, die möglicherweise sensible Daten enthalten. Ein PHP-Skript „database.php“ kann z. B. die Zugangsdaten zu einem Datenbankmanagementsystem enthalten. Diese Daten werden aber nicht an den Benutzer geschickt, sondern nur intern durch den (PHP-)Interpreter zur Verbindung zur Datenbank verwendet. Existiert nun aber ein Backup dieser Datei unter dem Namen „database.php.bak“, so wird der Inhalt der Datei möglicherweise als reiner Text erkannt und direkt an den Benutzer gesendet, der auf diesem Wege die Zugangsdaten im Klartext zu Gesicht bekommt. Manipulation von ParameternDie Manipulation von Parametern funktioniert auf gleiche Weise. Bekommt ein Anwender beispielsweise unter der URL BeispielEine URL sehe folgendermaßen aus: https://www.example.com/index.foo?item=datei1.html Der GET-Parameter Ein Angreifer kann nun dem Skript eine andere Datei angeben, die auch in einem völlig anderen Verzeichnis liegen kann, da man in einem Pfad durch Angabe von https://www.example.com/index.foo?item=../../../CONFIG.SYS Die genaue Verzeichnistiefe ist einem Angreifer normalerweise zwar nicht bekannt, kann dann aber durch Ausprobieren ermittelt werden. Ist der Webserver selbst anfällig, so könnten nicht nur beliebige Dateien ausgelesen, sondern auch beliebige Anwendungen aufgerufen werden, etwa durch: https://www.example.com/index.foo?item=../../../Windows/System32/cmd.exe+%2fC+dir+C%3a\ Auf einem angreifbaren Webserver wird dadurch (nach erfolgter URL-Dekodierung) der Kommandozeilen-Befehl Als Gegenmaßnahme einfach nach RechtslageDeutschlandIn Deutschland befindet sich diese Art von Angriff in einer rechtlichen Grauzone. Insbesondere dann, wenn der Angreifer sich einen Nutzen aus den Daten verschafft, liegt eine Straftat vor – auch wenn der Ersteller die Daten scheinbar öffentlich ins Netz gestellt hat. Weblinks |