Zugriff auf beliebige Web-Dokumente auf dem Server: http://my.host/cgi-bin/php/secret/doc.html
Der Teil der URL-Pfadinformation nach dem Namen der PHP Binärdatei,
/secret/doc.html wird im
allgemeinen benutzt, um den Namen der Datei zu übergeben,
die durch das CGI-Programm geöffnet und
interpretiert werden soll.
Normalerweise werden einige Einträge in der Konfigurationsdatei
des Webservers benutzt (Apache: Action), um Aufrufe von Dokumenten
wie http://my.host/secret/script.php
an den PHP-Interpreter umzuleiten. Bei dieser Konfiguration
überprüft der Webserver zuerst die Zugriffsrechte im Verzeichnis
/secret und erstellt anschließend
den umgeleiteten Aufruf http://my.host/cgi-bin/php/secret/script.php.
Unglücklicherweise wird, wenn der Aufruf bereits in dieser Form
geschieht, vom Webserver keine Zugriffsüberprüfung der Datei
/secret/script.php, sondern
lediglich der Datei /cgi-bin/php
vorgenommen. So ist
jeder Benutzer, der auf /cgi-bin/php
zugreifen darf in der Lage, sich zu jedem geschützten Dokument
auf dem Webserver Zugriff zu verschaffen.
Bei PHP können beim Kompilieren die Konfigurationsoption --enable-force-cgi-redirect
und zur Laufzeit die Konfigurationsdirektiven doc_root und user_dir
benutzt werden, um diesen Angriff zu verhindern, falls
der Verzeichnisbaum des Servers Verzeichnisse mit
Zugriffsbeschränkungen beinhaltet.
Ausführliche Informationen über die verschiedenen Kombinationen
siehe weiter unten.