Willkommen zu einem neuen Eintrag – Eine Frage vorab: Kennt einer von euch die PHP Konfiguration „expose_php“?

Solltet Ihr über einen eigenen Server (also keinen Shared-Host o.Ä.) verfügen würde ich euch Raten diese Konfiguration auszuschalten – Vor allem wenn eure PHP Version nicht auf einem aktuellen Stand ist und ggf. noch bekannte Sicherheitslücken beinhaltet. Durch expose_php ist es nämlich jedem beliebigen Besucher eurer Webseite/ -Applikation möglich genau zu sehen welche PHP Version und welche Extensions bei euch aktiv sind.

Was? Wie genau ist das möglich?

Es gibt ein paar fest definierte GET Parameter, die PHP dazu veranlassen die „phpcredits“ oder das PHP-Logo auszugeben. Diese lauten folgendermaßen:

http://web-developer-blog.com/?=PHPE9568F36-D428-11d2-A769-00AA001ACF42
http://web-developer-blog.com/?=PHPE9568F34-D428-11d2-A769-00AA001ACF42
http://web-developer-blog.com/?=PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000
  1. Der erste Link wird euch ein Easter-Egg zeigen – Ihr seht ein verändertes PHP-Logo das, je nach PHP Version, sein aussehen verändert (eine kleine Auflistung findet ihr auf 0php.com).
  2. Der zweite wird das „normale“ PHP Logo darstellen
  3. Beim letzten Link werden die PHP-Credits ausgegeben (Hier werden entsprechend eure aktiven Extensions aufgelistet)

Bei jedem der Requests werden einige Header mitgesendet – Hier der Header des PHP Logos meiner Maschine:

Content-Type   image/gif
Date           Sun, 01 Jul 2012 12:58:29 GMT
Server         Apache/1.3.41 (Unix) PHP/5.2.17
X-Powered-By   PHP/5.2.17

Dieses „Feature“ ist also ein indirektes Sicherheitsrisiko. Der Web-Developer-Blog läuft auf einem Shared-Host, weshalb ich es leider nicht ausschalten kann 🙁

Was kann ich dagegen tun?

Aktiv etwas dagegen tun kann nur euer Admin – Bei Shared-Hostern wird das allerdings schwierig (hier kann ggf. nicht einfach an der php.ini herumgeschraubt werden). An sich braucht ihr nur diese Zeile in eurer php.ini finden:

expose_php = On

Oder auch

expose_php = 1

Hier braucht ihr nur „On“ gegen „Off“ bzw. „1“ gegen „0“ tauschen. Schon sollten die GET-Parameter nicht mehr funktionieren.

Lässt sich außerhalb der php.ini was tun?

Leider ist das nicht möglich. Diese Einstellung lässt sich nur direkt in der php.ini setzen – Also nicht im Quelltext via ini_set. Auch das abfangen des GET-Parameters ist nicht möglich.

Mit diesem kurzen Eintrag verabschiede ich mich auch schon für Heute und möchte einen angenehmen Start in den Juli wünschen!

One comment on “expose_php offenbart PHP Informationen an Besucher

  • Sollte man wenigstens mod_rewrite zur Verfügung haben hilft auch ein:
    RewriteCond %{QUERY_STRING} \=PHP[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12} [NC]
    RewriteRule ^(.*)$ – [R=403,L];

    Und schon sind die neugierigen ausgesperrt.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.