Ich habe einige Server nach dem Tutorial "Debian Sarge, Apache2, Suexec2, mod_fastcgi, php5-fcgi HowTo" eingerichtet. Das Ganze hat super geklappt, läuft seit über einem Jahr ohne Probs und brachte auch Performance-Vorteile.
Gestern stellte ich jedoch fest, dass mit dieser Konfiguration PHP-Skripte mit falschen Dateiendungen ausgeführt werden können. So wird jede Datei, die im entsprechenden Verzeichnis liegt und nach dem Schema datei.php.IRGENDWAS benannt ist, als PHP-Skript ausgeführt.
Im entsprechenden Fall könnte ein Angreifer in einer Applikation, die zum Beispiel Bilderuploads unzureichend prüft, eine evil.php.jpg hochladen und den Server kompromitieren, je nachdem mit welchen Rechten die PHP-Datei abgespeichert wird.
Wie kann man einstellen, dass nur *.php Dateien auch als PHP-Skripte interpretiert werden?
fastcgi.conf: Dachte eigentlich AddHandler und AddType sorgen dafür
Code: Select all
FastCgiWrapper /usr/lib/apache2/suexec2
FastCgiServer /var/www/php-fcgi-scripts/default/php-fcgi-starter -user USER -group GROUP
AddHandler php-fastcgi .php
<Location /cgi-bin/php-fcgi-starter>
SetHandler fastcgi-script
Options +ExecCGI
</Location>
Action php-fastcgi /cgi-bin/php-fcgi-starter
AddType application/x-httpd-php .php
Code: Select all
...
ScriptAlias /cgi-bin/ /var/www/php-fcgi-scripts/default/
<Directory "/var/www/php-fcgi-scripts/default">
AllowOverride None
Options +ExecCGI -MultiViews -Indexes
Order allow,deny
Allow from all
</Directory>
...