Installation von PHP erkennen (expose_php)
Wenn man versucht, die Schwachstellen einer Webseite ausfindig zu machen, dann ist der erste Schritt, den man gehen sollte, möglichst viel Information über das System, das man angreifen will zu sammeln.
Will man verhindern, dass der Angreifer mitbekommt, dass auf dem Webserver PHP läuft und die Anwendung in dieser Sprache geschrieben wurde, dann gilt es zuerst die Dateiendungen von .php auf .htm oder vielleicht sogar .asp umzustellen. Hierzu sollte man das Apache Modul mod_rewrite verwenden. Aber wem sag ich das, ihr seid ja alles PHP Profis.
Wir gehen jetzt also davon, dass wir nur noch html Dateien auf dem Server liegen haben. Dummerweise hat PHP die Eigenart, dass man auch jetzt noch erkennen kann, dass es sich um eine PHP Installation handelt. Hängt man an eine beliebige URL den Parameter ?=PHPE9568F34-D428-11d2-A769-00AA001ACF42 an, so erscheint das PHP Logo. Warum dies so ist, ich hab mal wieder gar keine Ahnung, aber es funktioniert.
- http://www.phphatesme.com/?=PHPE9568F34-D428-11d2-A769-00AA001ACF42
- http://wikipedia.de/?=PHPE9568F34-D428-11d2-A769-00AA001ACF42
- http://berlios.de/?=PHPE9568F34-D428-11d2-A769-00AA001ACF42
- http://www.java.de/?=PHPE9568F34-D428-11d2-A769-00AA001ACF42
Das gute an diesem Feature ist, man kann es einfach ausschalten. Dazu bemüht man einfach die php.ini und schaltet den Parameter expose_php Parameter aus. Dies geht wir folgt:
expose_php = 'off'
Klingt einfach, ist es auch. Ist der Parameter erstmal umgesetzt, kann niemand mehr das PHP Logo auf magische Weise anzeigen lassen. Ich habs bei uns mal drinnen gelassen, denn rauszufinden, dass eine Webseite, die phphatesme heißt und ein Blog zum Thema php ist, sollte auch ohne Tricks möglich sein.
Zusätzlich sollte man dann noch drauf achten, ob der X-Powered-By Header gesetzt wird. Bei dir im Blog hier ist das z.B. PHP/5.2.0-8+etch10
Keine Ahnung ob der Header durch expose_php = ‚off‘ auch abgeschaltet wird.
Wird Apache als Webserver benutzt, sollte man folgende Einstellungen in seiner Konfiguration prüfen:
ServerTokes –> Versionsinformationen im HTTP-Antwort-Header
Default Wert ist Full, hier sollte man Prod einstellen.
ServerSignature –> Erzeugt bei automatisch generierten Seiten ( Index ) eine Fußzeile mit Server Informationen. Der Wert sollte auf Off gesetzt sein.
Hi Ralf,
expose_php ist auch für den HTTP Header X-Powered-By verantwortlich. Also wenn man expose_php auf off stellt verschwindet auch der Header.
Wenn es aktiviert ist und PHP aktuell ist freut sich Damien, der regelmäßig seine Statistiken zur Verbreitung von PHP-Versionen auf Basis des X-Powered-By headers erstellt 😉
http://www.nexen.net/chiffres_cles/phpversion/18824-php_statistics_for_october_2008.php
http://www.nexen.net/chiffres_cles/phpversion/18821-php_stats_evolution_for_october_2008.php
Und in wie weit das sicherheitstechnisch wirklich relevant ist … im Zweifel achte ich eh nicht drauf und feuer, als Scrit-Kiddie, die volle Serie an möglichen Exploits ab …