Regina Schlauklug: Traversal-Lücke?

Beitrag lesen

problematische Seite

Zweitens ist in dem Skript zum Ausliefern von Nicht-PHP-Ressourcen eine fette Sicherheitslücke, die es erlauben würde, sämtliche auf dem Server befindliche Dateien, die der PHP-Prozess lesen darf, abzufragen. Ich hab das Skript erstmal gelöscht und eine Bemerkung hinterlassen, bevor das noch irgendwo weiter zum Einsatz kommt.

Im von Dir entfernten Abschnitt steht aber:

if ( isset($_GET['file']) && $_GET['file'] ) {
   $_GET['file'] = './' . $_GET['file'];
   $forbidden=array('../', '/..', '/.ht');
   $_GET['file'] = str_replace($forbidden, '', $_GET['file']);

Danach beginnt der Inhalt von $_GET['file'] auf jeden Fall mit './' (dem aktuellen Verzeichnis) und ist um alle Zeichenfolgen bereinigt, mit denen auf ein tieferes Verzeichnis und die im Apache gesperrten '.ht-Dateien' zugegriffen werden kann.

Wie soll denn da eine Traversal-Lücke entstehen?