Zuverlässig erkennen ob eine Seite PHP benutzt
Ein Easteregg gegen die Sicherheit.
Geht das? Ja, das geht zumindest zuverlässiger als man denkt. Denn Standardwege die man so kennt, sind nun mal auch den Administratoren der Seite bekannt und können verändert werden. Meiner Ansicht nach ist es unnütze Mühe dieses Detail zu verschleiern, denn wenn jemand lustig XSS-Attacken ausprobieren will hat er auch ohne diese Information eine ziemlich gute Chance an PHP zu geraten.
Die einfachsten Mittel um PHP zu erkennen
- In die URL schauen, ob die Seite auf “.php(3/4/5)” oder auch “.phtml” endet.
- In den Quelltext gucken und erkennen, dass es sich um CMS XY-losgelöst handelt.
- Den HTTP-Response-Header angucken
Die unbekanntere Methode: Das Easteregg
Eine wohl nicht sehr geläufige Methode dagegen ist mir gerade aufgefallen. Denn die PHP-Entwickler haben, wie viele andere auch, die wunderbare Angewohnheit hier und da mal ein Easteregg in ihrem Code zu plazieren. Eastereggs sind ein paar kleine Befehlszeilen die das Leben versüßen weil sie einen immer wieder überraschen, wenn man auf sie stößt.
Man kann sie mit den Tracks vergleichen die manche Musiker auf ihren DVDs verstecken, nur dass in der PC-Welt diese Goodies einen zusätzlichen Nutzen haben: Sie verewigen den Programmierer und waren schlussfolglich schon bei der ein’ oder anderen Lizenzdiskussion beteiligt.
Aus dem PHP-Source. Datei: /ext/standard/info.h
51 52 53 54 55 56 57 58 | #endif /* HAVE_CREDITS_DEFS */ #define PHP_LOGO_GUID "PHPE9568F34-D428-11d2-A769-00AA001ACF42" #define PHP_EGG_LOGO_GUID "PHPE9568F36-D428-11d2-A769-00AA001ACF42" #define ZEND_LOGO_GUID "PHPE9568F35-D428-11d2-A769-00AA001ACF42" #define PHP_CREDITS_GUID "PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000" BEGIN_EXTERN_C() |
Man kann also an die URL jeder beliebigen Seite den Parameter “?=PHPE9568F36-D428-11d2-A769-00AA001ACF42” hängen und bekommt den Easteregg-Output wenn es sich um PHP handelt und expose_php angeschaltet ist. Das ist bei den meisten Webhostern tatsächlich der Fall und man hat auch nur selten die Möglichkeit da selbst drauf Einfluss zu nehmen.
Die Ausgabe zu diesem Parameter ist generell eine Grafik, welche übrigens auch in der phpinfo() am 1. April auftaucht und sich zwischen den Versionen unterscheidet. In PHP4 waren es z.B. immer Hundefotos.
Beispiele:
- HTML: http://www.seo-united.de/?=PHPE9568F36-D428-11d2-A769-00AA001ACF42
- PHP: http://www.seo-united.de/blog/?=PHPE9568F36-D428-11d2-A769-00AA001ACF42
Auch die anderen Parameter funktionieren natürlich problemfrei, selbst wenn das CMS unnütze Parameter normalerweise verbietet. Das hier verlinkte WordPress tut das selbstverständlich nicht, unser Framework auf der Hauptseite allerdings in der zu diesem Zeitpunkt eingesetzten Version schon. Haltet davon was ihr wollt.
- PHP Logo: ?=PHPE9568F34-D428-11d2-A769-00AA001ACF42
- Zend Logo: ?=PHPE9568F35-D428-11d2-A769-00AA001ACF42
- Easteregg: ?=PHPE9568F36-D428-11d2-A769-00AA001ACF42
- PHP Credits: ?=PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000
Easteregg Output in verschiedenen PHP Versionen
N1!
Aufgrund interner Umstrukturierungsmaßnahmen ist es uns z.Zt. leider nicht
möglich auf neue Kommentare zu reagieren. Wir bitten dies zu entschuldigen.
Bei dringenden Rückfragen suchen Sie bitten den direkten Kontakt zu uns.