Apache führt datei.php.jpg als PHP-Datei aus, wie unterbinden?

  • Thread starter Thread starter danielvolz
  • Start date Start date
D

danielvolz

Guest
Hallo an Alle,

Ich habe ein Problem mit der Konfiguration meines Apaches.
Auf unserer Plattform können Benutzer Avatare für Ihr Profil hochladen, was derzeit auch funktioniert.
Lädt jetzt ein Benutzer eine Datei hoch, welches 2 Dateiendungen trägt (zum Beispiel datei.php.jpg) wird dieses eigentliche Bild als PHP-Datei behandelt.

Das es ein Sicherheitsrisiko ist ist mir bewusst, nur wie bringe ich meinen Apache dazu, die Datei anhand Ihrer letzten Dateiendung zu interpretieren?

Wenn ich die Datei direkt aufrufen will bricht der Server mit einem "Internal Server Error" ab, im Logfile kann ich dann folgendes lesen:
Premature end of script headers (Ich denke mal, weil er es nicht schnallt, diese Datei als Bild, und nicht als PHP-Datei zu verarbeiten...)

Wer kann mir weiterhelfen? :confused:

Liebe Grüße,

Daniel
 
Wenn der Datei-Uploader nicht in der Lage ist, korrekte Dateinamen zu generieren und zu prüfen, ob die Dateiendung mit dem Dateiinhalt übereinstimmt, hast du sowieso ein Problem mit deiner Webanwendung.
 
Hallo Jens, danke für Deine Antwort.
PHP ist bei mir auch über fcgid eingebunden.

Die Infos auf dieser Seite:
http://php.net/manual/de/install.unix.apache2.php
habe ich ebenfalls gelesen, allerdings bringt das nicht das gewünschte Ergebnis.

Deine Möglichkeit habe ich jetzt noch nicht probiert.
Wo genau füge ich diese Anweisung ein? in der httpd.conf zeigt es leider keine Wirkung!

Gruß, Daniel
 
Witzig, ich benutze auch fast_cgi und krieg auch einen Internal Server Error, wenn ich eine Datei namens "test.php.jpg" anlege. Wenn ich ein move in test.jpg mache, stellt er mir die wunderbar dar.

Vermutlich liegt das im Apache, weil irgendein RegEx falsch ist - oder in der broken-by-design "Sprache" php; aber mich stört das jetzt eigentlich grad nicht :p
 
Die Ursache dieses Problems wird von der ASF hier beschrieben.

Ich war mal früher der Meinung das böse mod_negotiation sei daran Schuld, aber das wird hier nicht direkt erwähnt. Aber die Sache kann schon lästig sein und zu einer echten Sicherheitslücke auf schlecht konfigurierten Servern mutieren.

@TS: Schau mal wo Du den Handler "fcgid-script" per AddType einem MIME-Typ zuweist und ändere das wie hier bereits erwähnt in einen FilesMatch-Container mit expliziter SetHandler-Anweisung.
 
Solange keiner auf die Idee kommt, eine böse "Shell.php" in "shell.php.jpg" umzubenennen und diese dann mit der Anhang Funktion den Forums zu injecten, ist's ein Schönheitsfehler, oder wird ein php Script dann nicht ausgeführt?
 
Auch ein "script.php.old" oder "script.php.bak" will ich gewöhnlich nicht weiter ausgeführt haben. :eek:
 
Vorerst nochmal vielen Dank für Eure Tipps und Hilfen.
Zusammen mit einem IT-Kollegen haben wir das Problem Gott sei Dank in den Griff bekommen.

Da ich PLESK verwende, legt PLESK für jeden "vhost" eine eigene httpd an, welche man in der Regel unter:
/var/www/vhosts/xxxx/conf/xxxxxxx.xxxxxx_httpd_ip_default.include
findet.

Darin befindet sich folgende Anweisung:
Code:
<Files ~ (\.php)>

Diese ist allerdings nicht ganz richtig, weil der Apache dann alles was eine .php Dateierweiterung beinhaltet auch als PHP-Datei interpretiert.

Richtig wäre in diesem Fall:
Code:
<Files ~ (\.php)$>

Nachdem diese Anweisung geändert wurde, tritt das oben beschriebene Verhalten nicht mehr auf.

Jetzt kommt allerdings ein weiteres Problem dazu:
Werden die "Hostingeinstellungen" innerhalb von PLESK geändert, schreibt PLESK diese Datei neu, und fügt dann logischwerweise auch die falsche Anweisung wieder mit ein.

Deswegen muss die Datei:
/opt/psa/admin/conf/templates/default/service/php_over_cgi.php
dementsprechend geändert werden, damit die richtige Anweisung bei jeder Änderung automatisch übernommen wird.

Ich wollte hier nur für die Nachwelt die Lösung reinschreiben, vielleicht kann der ein oder andere diesen Ansatz für seinen eigenen Server gebrauchen.

Gruß, Daniel :)
 
Natürlich und selbstverständlich hast du auch geprüft, ob dieser Fehler auch in der aktuellen Plesk Version vorhanden ist und hast ihn gegebenfalls an Parallels gemeldet, damit das mal gefixt wird. :rolleyes:
 
Natürlich und selbstverständlich hast du auch geprüft, ob dieser Fehler auch in der aktuellen Plesk Version vorhanden ist und hast ihn gegebenfalls an Parallels gemeldet, damit das mal gefixt wird. :rolleyes:

Die aktuelle PLESK- Version ist installiert (sollte 10.4.4 Update #19 sein) und dort tritt der Fehler auch auf.

Wenn ich ehrlich bin habe ich daran nicht gedacht und im Eifer des Gefechts vergessen. Zudem finde ich bei Parallels nicht direkt eine Kontaktadresse um diesen Fehler zu melden.

Ich könnte es ins Forum schreiben, aber ob da die Entwickler reinschauen weiss ich nicht.
Hast Du zufällig eine Adresse dafür, wo ich mich in diesem Fall hinwenden kann?

Andernfalls teile ich es meinem Provider mit, dieses Problem an Parallels weiterzuleiten, schließlich liefert Parallels für seine Partner auch einen gewissen Support im Fehlerfall.
 
Anstatt den Uploader so zuz programmieren oder zu fixen, damit der keine doppelten Dateiendungen zulässt, auch den Mime-type selbst erkennt und notfalls ist eien harmlose Dateiendung umbenennt, wird darauf vertraut, dass sich sowas mit der Apachekonfig richten lässt.

Auch eine Art von Pseudosicherheit. :eek:
 
Es läßt sich in der Apache-Konfig korrigieren und sollte dort in jedem Fall auch gemacht werden. Und nicht jeder Admin hat Einfluß darauf, was alles auf den Server geladen wird. Letztendlich kann es auch ein Webspace-User sein, der ein entsprechendes Uploadscript auch seinem Webspace gepackt hat.
Der Fehler tritt durch eine bestimmte Apache-Konfiguration auf und die muß dann natürlich vom Serveradmin auch entsprechend modifiziert werden, damit sie geschlossen wird. Oder wie würde es dir gefallen, wenn ein Serveradmin einfach deine PHP-Scripte verändert?
 
Und nicht jeder Admin hat Einfluß darauf, was alles auf den Server geladen wird.
(...)
Oder wie würde es dir gefallen, wenn ein Serveradmin einfach deine PHP-Scripte verändert?
Wenn der Admin nicht weiß, was auf seinem Server läuft, hat der früher oder später ein Problem.
Wenn es der Sicherheit dient, würde ich das einem Admin erlauben.
Aber das ist sowieso Ansichtssache wer welche Umgangsphilosopie pflegt.
 
Ein Serveradmin darf gerne problematische Scripte sperren, wenn er der Meinung ist, daß sie eine Gefahr für die Serversicherheit bedeuten. Das Anpassen ist die Aufgabe des Webmasters/Programmierers der Scripte.
Aber wie dem auch sei: Es ist und bleibt ein Apache-Problem und das muß in der Apache-Konfig korrigiert werden. Das Upload-Script anzupassen, ist (in diesem konkreten Fall) nur ein Workaround - wobei eine besser Upload-Routine natürlich auch vor anderen Problemen schützen kann und daher trotzdem gemacht werden sollte.
 
Anstatt den Uploader so zuz programmieren oder zu fixen, damit der keine doppelten Dateiendungen zulässt, auch den Mime-type selbst erkennt und notfalls ist eien harmlose Dateiendung umbenennt, wird darauf vertraut, dass sich sowas mit der Apachekonfig richten lässt.

Auch eine Art von Pseudosicherheit. :eek:

GwenDragon, Es geht hier nicht um das Upload-Script.
Dieses Script war Teil einer großen CMS-Software, welche es ermöglichte dem Benutzerprofil ein eigenes Avatar zuzuordnen. Der Fehler ist beim Umzug auf ein anderes System aufgefallen, als plötzlich manche Avatare mit doppelten Dateiendungen nicht mehr angezeigt wurden.

Nichts desto trotz:
Der Fehler wurde direkt an Parallels weitergeleitet und anerkannt.
Ob die dieses Problem in einem zukünftigen Update dann beheben liegt nicht in meiner Obhut. Ich hab meine Schuldigkeit getan und hoffe, das andere mit dem selben Problem auf diese Lösung zurückgreifen.

Liebe Grüße, Daniel
 
Back
Top