O'Reilly logo

PHP-Sicherheit: PHP/MySQL-Webanwendungen sicher programmieren by Stefan Esser, Christopher Kunz

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

209
10 PHP intern
Neben der Absicherung Ihrer Anwendungen ist eine sorgfäl-
tige Konfiguration von PHP selbst wichtiger Bestandteil einer
sicheren Umgebung. Fehler im Kern der Sprache machen regel-
mäßige Updates notwendig, und einige sicherheitskritische
Einstellungen sollten von Ihnen in jedem Fall vorgenommen
werden. Dieses Kapitel zeigt Ihnen, mit welchen Bordmitteln
Sie PHP sicherer machen können.
10.1 Fehler in PHP
Wie jede andere Software auch, ist PHP nicht vor Fehlern gefeit.
Obgleich ein internationales Team die Qualitätssicherung jeder neuen
PHP-Version übernimmt, ist es unmöglich, jeden Bug sofort zu finden
und zu beheben. Im Laufe der letzten Jahre gab es einige Bugs in PHP
und PHP-Modulen, die sicherheitsrelevant sind – einige konnten von
Angreifern gar dazu genutzt werden, den angegriffenen Server zu über-
nehmen und eigenen Schadcode nachzuladen.
Da die PHP-Version 3 seit mittlerweile fast sieben Jahren nicht
mehr aktuell ist, gehen wir im Folgenden nur auf einige ältere Pro-
bleme in PHP 4 und 5 ein, die jedoch noch immer von Angreifern aus-
genutzt werden.
10.1.1 Month of PHP Bugs
Stefan Esser, der Koautor dieses Buches, hat im März 2007 eine Initia-
tive ins Leben gerufen, um die PHP-Entwicklercommunity aufzurüt-
teln und viele von ihm gefundene Fehler zu veröffentlichen. Dieser
»Month of PHP Bugs«
1
erregte bei den Core-Entwicklern einigen
1. http://www.php-security.org/
10 PHP intern210
Unmut, trug aber mit über 40 veröffentlichten, teilweise als kritisch
einzustufenden Lücken zentral zur Verbesserung der Sicherheit im
Sprachkern von PHP bei.
10.1.2 File-Upload-Bug
In allen PHP-Versionen von 4.0.2 bis 4.0.7RC2 war eine Lücke enthal-
ten, die den Upload von Schadcode per HTTP erlaubte – und zwar an
jedes beliebige PHP-Skript, nicht nur an solche, die auch zum Datei-
Upload gedacht waren. Mithilfe dieser Lücke konnte eigener Code
hochgeladen und ausgeführt werden – somit gelangte der Angreifer an
einen Zugang auf dem Zielsystem, meist mit den Benutzerrechten des
Webservers. Ein Exploit-Tool namens »7350fun« wurde von der
Sicherheitsgruppe »Team Teso« entwickelt, jedoch nicht öffentlich
angeboten. Es zirkuliert bis heute auf Szeneseiten und ist häufig auf
gecrackten Servern zu finden.
10.1.3 Unsichere (De-)Serialisierung
Durch einen Bug in den Funktionen zur Serialisierung und Deseriali-
sierung von Variablen,
serialize() respektive deserialize(), wurde
bei einem Aufruf mit einer speziell präparierten Variablen mehr Spei-
cher freigegeben als erwünscht – und damit konnte eigener Code aus-
geführt werden. Pikant wurde diese Lücke dadurch, dass eine Reihe
von Anwendungen ohne genaue Prüfung serialisierte Daten aus Nutze-
reingaben – meist Cookies – an die Deserialisierungsfunktion überga-
ben. Dadurch war der Weg zur Königsklasse der Exploits geebnet –
Angreifer konnten eigenen Schadcode direkt über ein Cookie ausfüh-
ren. Die Liste der verwundbaren Anwendungen liest sich wie ein
»Who’s who« der PHP-Foren: phpBB, WoltLab Burning Board und
Invision waren nur einige der Applikationen, die unter diesem Bug zu
leiden hatten.
10.1.4 Verwirrter Speichermanager
Der PHP-Speichermanager in Version 5.2.0 ließ sich von einer Anfrage
nach mehr als 2 GB Speicher aus dem Tritt bringen und lieferte statt
des angeforderten Speichersegments eines mit der minimal möglichen
Größe zurück. Dieser Fehler lässt sich nicht direkt, wohl aber z.B.
durch speziell präparierte Anfragen über den in PHP integrierten
SOAP-Client auslösen. Als Fehler Nr. 44 war dieser Bug im »Month of
PHP Bugs« enthalten.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required