Abro, Mai 2010

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:

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 Easteregg output: PHPE9568F36-D428-11d2-A769-00AA001ACF42Easteregg Output in verschiedenen PHP Versionen

N1!


Kommentare sind geschlossen.
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.
Das Unternehmen Lucido Media GbR wurde am 31.12.2013 stillgelegt. Diese Website existiert weiterhin zu Archivzwecken. Der Gesellschafter Daniel Abromeit führt seine Arbeit ab sofort unter dem Dach der Agentur Koch Essen fort. Für entsprechende Anfragen wenden Sie sich daher bitte an https://koch-essen.de/kontakt/