Meine Herren!
Mein Artikel hierzu ist praktisch das, was ich hier schon einmal ins Forum gepostet habe.
Es ist von mir getestet, das Problem ist also nachvollziehbar: Hier leckts ;)
hotti… du solltest vorsichtiger damit sein, was du als Sicherheitslücke bezeichnest.
Die Sicherheitslücke ist nicht in PHP oder Apache zu finden, sondern nur in deiner Beispiel-Anwendung. Und selbst in deinem Beispiel fehlt der relevante Teil, der die vermeintliche Sicherheitslücke demonstrieren soll, nämlich die index.php.
Ich nehme an, deine index.php-Datei soll irgendwie so aufgebaut sein:
<?php readfile( urlecnode( $_GET['page'] ) );
Wenn du als Programmier nicht willst, dass der Nutzer sich auf diese Art jede beliebige Datei anschauen können soll, dann ist das natürlich ein Programmierfehler.
Wenn du möchtest, dass PHP beim Lesen der Datei den HTTP-Access Schutz respektiert, dann musst du die Datei eben über das HTTP-Protokoll lesen und nicht direkt vom Datei-System.
<?php readfile( 'http://example.com/' . urlencode( $_GET['page'] );
Den Bezug zum $_GET-Array, den du in deiner Einleitung herstellst, kann ich auch nicht nachvollziehen.
Um das nochmal in aller Ausdrücklichkeit zu formulieren: Dein Code ist kein Exploit zu einer Sicherheitslücke, die du entdeckt hast, sondern nur eine Demonstration, wie man sich selbst eine klaffende Sicherheitslücke schaffen kann, wenn man nicht aufpasst.
--
“All right, then, I'll go to hell.” – Huck Finn