Google Groups unterstützt keine neuen Usenet-Beiträge oder ‑Abos mehr. Bisherige Inhalte sind weiterhin sichtbar.

Scriptausführung verhindern per .htaccess

10 Aufrufe
Direkt zur ersten ungelesenen Nachricht

Oliver Betz

ungelesen,
11.03.2013, 03:38:2611.03.13
an
Hallo Alle,

welche möglichst universelle Lösung verhindert die Ausführung
beliebiger Scripte in einem Verzeichnis (in dem Nutzer Dateien
hochladen können)? Der Inhalt von Dateien soll ausgeliefert werden.

Da es so viele Möglichkeiten gibt, Scriptsprachen einzubinden,
befürchte ich, etwas übersehen haben könnte.

"Options -ExecCGI" funktioniert in den meisten Shared Hostings.
Funktioniert aber nicht, wenn der Interpreter als Modul läuft.

Übersehe ich bei "SetHandler default-handler" etwas?

Das in http://httpd.apache.org/docs/current/mod/core.html#sethandler
dokumentierte "SetHandler None" hat in meinen Versuchen keine
erkennbare Wirkung gezeigt, über eine Erklärung würde ich mich freuen.

Servus

Oliver
--
Oliver Betz, Muenchen http://oliverbetz.de/

Olaf Schwartowski

ungelesen,
11.03.2013, 07:41:4411.03.13
an
Hallo!
Ich kenne mich mit Linux nicht so gut aus, aber würde es nicht reichen,
wenn man dem Directory das Execute Bit wegnimmt?
Und wenn ein Upload kommt, das dann auch ohne das X-Bit speichern.



Oliver Betz

ungelesen,
11.03.2013, 07:55:0111.03.13
an
Olaf Schwartowski schrieb:

[...]

>Ich kenne mich mit Linux nicht so gut aus, aber würde es nicht reichen,
>wenn man dem Directory das Execute Bit wegnimmt?

Bei Perl vielleicht, aber z.B. nicht bei PHP.

Servus

Oliver
--
Oliver Betz, Munich
despammed.com is broken, use Reply-To:

Arno Welzel

ungelesen,
11.03.2013, 10:29:1811.03.13
an
Am 11.03.2013 08:38, schrieb Oliver Betz:

> welche m�glichst universelle L�sung verhindert die Ausf�hrung
> beliebiger Scripte in einem Verzeichnis (in dem Nutzer Dateien
> hochladen k�nnen)? Der Inhalt von Dateien soll ausgeliefert werden.
>
> Da es so viele M�glichkeiten gibt, Scriptsprachen einzubinden,
> bef�rchte ich, etwas �bersehen haben k�nnte.
>
> "Options -ExecCGI" funktioniert in den meisten Shared Hostings.
> Funktioniert aber nicht, wenn der Interpreter als Modul l�uft.
>
> �bersehe ich bei "SetHandler default-handler" etwas?
>
> Das in http://httpd.apache.org/docs/current/mod/core.html#sethandler
> dokumentierte "SetHandler None" hat in meinen Versuchen keine
> erkennbare Wirkung gezeigt, �ber eine Erkl�rung w�rde ich mich freuen.

Bei Shared Hosting ist das �berschreiben von Handlern per .htaccess
nicht zwangsl�ufig m�glich.

Siehe auch <http://httpd.apache.org/docs/2.2/de/mod/core.html#allowoverride>


--
Arno Welzel
http://arnowelzel.de
http://de-rec-fahrrad.de

Oliver Betz

ungelesen,
12.03.2013, 06:34:3712.03.13
an
Arno Welzel schrieb:

>Bei Shared Hosting ist das überschreiben von Handlern per .htaccess
>nicht zwangsläufig möglich.
>
>Siehe auch <http://httpd.apache.org/docs/2.2/de/mod/core.html#allowoverride>

danke für den Hinweis.

Aber wenigstens soll es einen "internal server error" geben, d.h. wenn
es nicht klappt, merkt man es auch dann, wenn man so nachlässig war,
die Maßnahme nicht zu überprüfen.

Servus

Oliver
--

Gustaf Mossakowski

ungelesen,
12.03.2013, 08:44:0612.03.13
an
Oliver Betz schrieb:

> welche m�glichst universelle L�sung verhindert die Ausf�hrung
> beliebiger Scripte in einem Verzeichnis (in dem Nutzer Dateien
> hochladen k�nnen)? Der Inhalt von Dateien soll ausgeliefert werden.

Lade die Dateien in ein Verzeichnis hoch, das nicht unterhalb des
�DocumentRoot� liegt.

Nach Pr�fung, z. B. mit 'identify' von ImageMagick oder 'file' oder in
PHP mit 'getimagesize()', kannst du die Dateien, die einen der
gew�nschten Dateitypen haben (Whitelist), umbenennen (Dateiname ohne
Sonderzeichen + Erweiterung) und dann in ein Verzeichnis verschieben,
das �ber http erreichbar ist.

Ist sauber und spart Arbeit.

Viele Gr��e
Gustaf

Oliver Betz

ungelesen,
12.03.2013, 09:58:1412.03.13
an
Gustaf Mossakowski schrieb:
wenn ich das richtig verstehe, deckt das nicht den Fall ab, Quelltext
zum Download anzubieten.

Und wenn Du mit "Erweiterung" die Zeichen nach dem letzten Punkt
meinst: Hilft nicht zuverl�ssig, das Thema hatten wir vor ein paar
Tagen, siehe <m1k3qcl...@khp-mbp.speedport_w_723v_1_26_000>

Servus

Oliver
--

Gustaf Mossakowski

ungelesen,
12.03.2013, 11:52:2812.03.13
an
Oliver Betz schrieb:

> Gustaf Mossakowski schrieb:
>> Nach Prüfung, z. B. mit 'identify' von ImageMagick oder 'file' oder
>> in PHP mit 'getimagesize()', kannst du die Dateien, die einen der
>> gewünschten Dateitypen haben (Whitelist), umbenennen (Dateiname ohne
>> Sonderzeichen + Erweiterung) und dann in ein Verzeichnis
>> verschieben, das über http erreichbar ist.
>
> wenn ich das richtig verstehe, deckt das nicht den Fall ab, Quelltext
> zum Download anzubieten.

Quelltext zum Download würde ich in einem Archiv anbieten (gzip, zip,
tar, was auch immer). Meistens ist es doch nicht nur eine Datei, die man
braucht, und nicht nur ein Ordner, in dem die Dateien liegen.

> Und wenn Du mit "Erweiterung" die Zeichen nach dem letzten Punkt
> meinst: Hilft nicht zuverlässig, das Thema hatten wir vor ein paar
> Tagen, siehe <m1k3qcl...@khp-mbp.speedport_w_723v_1_26_000>

Ja, ich würde die Dateierweiterung auch direkt auf '.txt' ändern, nicht
auf '.php.txt'. Wenn du möchtest, dass die Datei direkt herunterzuladen
ist und sofort genutzt werden kann, kannst du mit dem
'Content-Disposition'-Header den vorgeschlagenen Dateinamen auf '.php'
enden lassen.

Speziell PHP kann man beim Apachen statt mit

AddHandler application/x-httpd-php .php

auch mit

AddType application/x-httpd-php .php

einbinden, dann besteht das Problem, das Karl in Message-ID:
<m1k3qcl...@khp-mbp.speedport_w_723v_1_26_000>
beschrieben hat, nicht.

Viele Grüße
Gustaf

Arno Welzel

ungelesen,
12.03.2013, 12:20:1112.03.13
an
Am 12.03.2013 11:34, schrieb Oliver Betz:
> Arno Welzel schrieb:
>
>> Bei Shared Hosting ist das überschreiben von Handlern per .htaccess
>> nicht zwangsläufig möglich.
>>
>> Siehe auch <http://httpd.apache.org/docs/2.2/de/mod/core.html#allowoverride>
>
> danke für den Hinweis.
>
> Aber wenigstens soll es einen "internal server error" geben, d.h. wenn
> es nicht klappt, merkt man es auch dann, wenn man so nachlässig war,
> die Maßnahme nicht zu überprüfen.

Alternative: Lasse alle Zugriffe auf das fragliche Verzeichnis per
Rewrite-Regel auf ein Script umleiten, dass sich um die Auslieferung der
angefragten Dateien kümmert.

Oliver Betz

ungelesen,
12.03.2013, 14:40:2912.03.13
an
Gustaf Mossakowski schrieb:

[Uploads umbenennen)

>> Und wenn Du mit "Erweiterung" die Zeichen nach dem letzten Punkt
>> meinst: Hilft nicht zuverl�ssig, das Thema hatten wir vor ein paar
>> Tagen, siehe <m1k3qcl...@khp-mbp.speedport_w_723v_1_26_000>
>
>Ja, ich w�rde die Dateierweiterung auch direkt auf '.txt' �ndern, nicht
>auf '.php.txt'. Wenn du m�chtest, dass die Datei direkt herunterzuladen

das l�uft dann auf eine Blacklist hinaus, welche Teilstrings aus
Dateinamen entfernt werden m�ssen. Ist ohnehin vorhanden, aber
Blacklists sind tendenziell unsicher.

Ich sehe noch nicht den Vorteil Deiner L�sung gegen�ber dem generellen
Abstellen der Skriptverarbeitung.

Servus

Oliver
--
Oliver Betz, Muenchen http://oliverbetz.de/

Gustaf Mossakowski

ungelesen,
13.03.2013, 03:50:3613.03.13
an
Oliver Betz schrieb:

> das läuft dann auf eine Blacklist hinaus, welche Teilstrings aus
> Dateinamen entfernt werden müssen. Ist ohnehin vorhanden, aber
> Blacklists sind tendenziell unsicher.

Müssen die URLs denn unbedingt Punkte enthalten? Du kannst auch alle
Punkte durch Leerzeichen, Minuszeichen oder ähnliches ersetzen. Und dann
kommt hinten die Dateieindung dran.

Bei Dateiuploads arbeite ich nur mit Whitelists, da ich auch den
Dateityp prüfe (ist das PDF wirklich ein PDF oder doch nur ein JPEG).
Die Anzahl der unterstützten Dateiformate sollte im Normalfall doch
recht überschaubar sein, oder?

> Ich sehe noch nicht den Vorteil Deiner Lösung gegenüber dem generellen
> Abstellen der Skriptverarbeitung.

Kommt drauf an, was man möchte und was möglich ist. Welcher Lösungsweg
konkret der Beste ist, wirst du besser sagen können. Meine Lösung wäre
eh eine andere, ich liefere Dateien per Skript aus, wie auch Arno in
Message-ID: <khnkgp$qlp$1...@dont-email.me> schreibt. Dann muß man ein paar
Funktionen des Webservers nachbilden, kann aber dafür genau bestimmen,
was passiert.

Viele Grüße, Gustaf
0 neue Nachrichten