Dateien mit ungültigen Eingaben durchsuchen
Verzeichnistraversierung
Die Verzeichnistraversierung ermöglicht den Zugriff auf Dateien, auf die ein Benutzer normalerweise nicht zugreifen darf. Dies wird erreicht, indem eine Webanwendung dazu verleitet wird, im Verzeichnisbaum zurückzugehen, sodass sie Dateien in übergeordneten Verzeichnissen liest oder ausführt. Ein einfaches Beispiel ist das Senden von ..\ oder ../ in einer Anfrage an die Anwendung oder API, was pro Befehl ein Verzeichnis nach oben traversiert.
Am effektivsten ist die Verzeichnistraversierung, wenn man bis zum Wurzelverzeichnis zurückgehen kann, um beliebige Befehle oder Programme in jedem Ordner des Computers auszuführen. Dies gelingt jedoch nur, wenn die Anwendung unsachgemäß konfiguriert ist und Zugriff auf solche Verzeichnisse hat.
Umgehung von Eingabefiltern durch Zeichenkodierung
Ordnungsgemäß konfigurierte Webserver filtern bekannte, nicht vertrauenswürdige Eingaben wie die für die Verzeichnistraversierung verwendeten Zeichen. Diese Filter können die Eingabe verarbeiten oder die Anfrage komplett blockieren. Um solche Filter zu umgehen, können Zeichen in den Anfragen hexadezimal kodiert werden. Zum Beispiel entspricht %2E einem Punkt (.) und %2F einem Schrägstrich (/).
Anstatt zu navigieren zu:
http://site.beispiel/../../Windows/system32/cmd.exe
könnte die URL wie folgt kodiert werden:
http://site.beispiel/%2E%2E%2F%2E%2E%2FWindows/system32/cmd.exe
Um Filter zu umgehen, die einfache Kodierungen erkennen, können Zeichen auch doppelt kodiert werden. Das %-Symbol wird selbst als %25 kodiert. Statt %2E für einen Punkt würde man %252E verwenden. Die vollständige URL ändert sich dann zu:
http://site.beispiel/%252E%252E%252F%252E%252E%252FWindows/system32/cmd.exe
Verwendung des Poison Null Byte
Ein Null-Byte ist ein Zeichen mit dem Wert Null, das in den meisten Programmiersprachen zur Kennzeichnung des Endes einer Zeichenkette verwendet wird. Mit einem “Poison Null Byte” kann dieses Terminierungszeichen ausgenutzt werden, um eine Webanwendung anzugreifen, die Nullterminatoren nicht korrekt behandelt. Die hexadezimale Darstellung des Poison Null Byte ist %00. Es kann verschiedene Angriffe unterstützen, einschließlich der Verzeichnistraversierung.
Angenommen, eine Webanwendung erlaubt es Benutzern, jede Datei im Verzeichnis /var/www abzurufen, die die Erweiterung .php hat. Selbst wenn man das Dateisystem traversieren kann, ist der Zugriff auf eine spezifische Datei ohne .php-Endung möglicherweise nicht möglich. Das Poison Null Byte kann hier Abhilfe schaffen:
http://site.beispiel/page.php?file=../../etc/passwd%00
Dies veranlasst die Webanwendung, die erwartete .php-Erweiterung zu ignorieren, sodass die passwd-Datei abgerufen werden kann.
Tags
SicherheitVerzeichnistraversierungEingabevalidierungWebanwendungenKodierungsumgehung