Module 11: Broken Access Control

Path Traversal

"Don't stay in your directory." Lerne, wie unzureichende Dateipfad-Validierung es Angreifern ermöglicht, das gesamte Dateisystem des Servers zu explorieren.

Die Punkt-Punkt-Slash Methode

Viele Webanwendungen laden Dateien dynamisch (z.B. image.php?file=portrait.jpg). Wenn die Anwendung den Input nicht filtert, kann ein Angreifer mit ../ (Parent Directory) Ebenen nach oben springen.

Das Ziel ist es meist, die Root-Ebene zu erreichen und von dort aus geschützte Systemdateien auszulesen.

Beliebte Ziele:

  • - /etc/passwd (User Liste unter Linux)
  • - /var/www/html/config.php (DB Credentials)
  • - C:\Windows\win.ini (Windows System Info)
Vulnerable File Fetcher v1.0
?file=
// Dateiinhalt wird hier angezeigt...

Traversal Payloads

Basic Linux ../../../../etc/passwd
Null-Byte Injection ../../etc/passwd%00.jpg
Double Encoding ..%252f..%252fetc/passwd

Master FAQ

Wie schützt man eine Applikation gegen Path Traversal?

Die effektivste Methode ist das Whitelisting. Anstatt zu versuchen, "böse" Zeichen wie ../ zu filtern, sollte die Applikation nur exakte Dateinamen aus einer Liste erlauben.

Zudem sollte die Funktion basename() (in PHP) genutzt werden, die alle Pfadanteile entfernt und nur den reinen Dateinamen zurückgibt.

Was ist eine "Null-Byte Injection" (%00)?

In älteren PHP-Versionen konnte man mit dem Zeichen %00 (Null-Byte) das Ende eines Strings erzwingen. Wenn die Applikation automatisch .jpg an den Pfad anhängt, macht der Angreifer daraus: /etc/passwd%00.jpg. Der Server liest nur bis zum Null-Byte und öffnet die Passwort-Datei.

Kann "Chroot Jail" Path Traversal verhindern?

Ja, ein Chroot Jail (oder Container wie Docker) begrenzt den Zugriffsprozess auf ein virtuelles Root-Verzeichnis. Selbst wenn der Angreifer hundertmal ../ eingibt, kann er nicht über das zugewiesene Verzeichnis hinaus in das echte Host-System springen.