Zum Inhalt springen

Directory Traversal

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 8. April 2008 um 04:55 Uhr durch 85.178.176.178 (Diskussion). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Unter Directory Traversal versteht man eine Sicherheitslücke in Web-Programmen wie z. B. einem Webserver oder einer Webanwendung, bei der durch Manipulation von Pfadangaben auf beliebige Dateien und Verzeichnisse zugegriffen werden kann, die dafür eigentlich nicht vorgesehen waren. Diese kann so ausgenutzt werden, dass sensible Daten wie Passwörter preisgegeben werden.

Details

Normalerweise sollte von Außen nicht auf Dateien außerhalb des Web-Verzeichnisses oder dessen Unterverzeichnisse eines Webservers 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 mit der Angabe von ../ sich in der Verzeichnisstruktur eine Ebene nach oben bewegt.

Beispiel

Eine URL sehe folgendermaßen aus:

http://www.example.com/index.php?item=datei1.html

Das item-Argument dient hierbei zur Angabe einer Datei, die ausgegeben werden soll. Wenn das index.php-Skript den Argumentwert nicht ausreichend prüft, liegt eine Directory-Traversal-Schwachstelle vor.

Ein Angreifer kann nun eine andere Datei angeben, die auch in einem völlig anderen Verzeichnis liegen kann, da man durch in einem Pfad durch Angabe von ../ eine Verzeichnisebene nach oben gehen kann. Angenommen das Web-Verzeichnis liege drei Verzeichnisebenen tief auf dem Laufwerk C:, so würde folgende URL auf einem Windows-Webserver die Datei C:/Config.sys ausgeben.

http://www.example.com/index.php?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:

http://www.example.com/index.php?item=../../../Windows/System32/cmd.exe?/C+dir+C:\

Als Gegenmaßnahme einfach nach ../ in einem Pfad zu suchen reicht nicht aus. Es muss auch berücksichtigt werden, dass einzelne Zeichen durch URL-Kodierung ersetzt sein könnten. (So bewirkt z.B. %2e%2e%5c genau das Gleiche wie ../ in einem URL.)


Siehe auch: Tainted Data

Anleitung zum Absichern gegen Directory Traversal Angriffe: