bierkistenschlepper
Goto Top

Upload scheitert wegen falschen Rechten

Hallo,

ich habe nach einem Serverumzug für einen Kunden ein kleines Upload-Skript programmiert. Es sollen Fotos hochgeladen werden. Das Speichern der Bilder scheiterte, weil die Rechte des Zielordners ../uploads/slideshow falsch gesetzt waren.

Nachdem ich dann das Recht "Ausführen" aktiviert habe, ging es plötzlich. Ist das normal?

Ich dachte zum speichern braucht man nur Schreib-Rechte? Aktuell hat der Ordner die Rechte 777. Mit 666 schlägt der Upload reproduzierbar fehl.
Warning: move_uploaded_file(../upload/slideshow/1.jpg) [function.move-uploaded-file]: failed to open stream: Permission denied in /var/www/web6/html/admin/slideshow.php on line 58

Ist das nicht ein Sicherheitsrisiko? Immerhin kann man ja ausführbare Datein als Bild tarnen.

Und noch eine Frage: Welche Rechte hat denn der anonyme Besucher der Seite? Läuft der unter "Andere"? Und ich bin der Besitzer?

Was sind "normale" Rechte für einen Webserver mit ein wenig PHP und einem Upload? Wobei ich hinzufügen muss, dass die Seite sehr unübersichtlich und schlecht programmiert wurde (nicht von mir).. Es lassen sich schlecht verzeichnisweise Rechte setzen.

Ich frage das alles ur, weil ich da keine Sicherheitslücken programmieren will.

Server läuft auf aktuellem Debian und als FTP-Client nutze ich Cyberduck (Win).

Content-ID: 169601

Url: https://administrator.de/contentid/169601

Ausgedruckt am: 23.11.2024 um 12:11 Uhr

Hitman4021
Hitman4021 12.07.2011 um 22:17:27 Uhr
Goto Top
Zitat von @Bierkistenschlepper:
Nachdem ich dann das Recht "Ausführen" aktiviert habe, ging es plötzlich. Ist das normal?
Nein!

Ich dachte zum speichern braucht man nur Schreib-Rechte? Aktuell hat der Ordner die Rechte 777. Mit 666 schlägt der Upload
reproduzierbar fehl.
Warning: move_uploaded_file(../upload/slideshow/1.jpg) [function.move-uploaded-file]: failed to open stream: Permission denied in
/var/www/web6/html/admin/slideshow.php on line 58
Was für eine Gruppe hat der Webserver und Ftp Server?
Welche Gruppe hat der User?
FTP Rewrite und Unmask einträge?

Ist das nicht ein Sicherheitsrisiko? Immerhin kann man ja ausführbare Datein als Bild tarnen.
Ja definitiv

Und noch eine Frage: Welche Rechte hat denn der anonyme Besucher der Seite? Läuft der unter "Andere"? Und ich bin
der Besitzer?
Der Zugriff über den Browser läuft unter dem User Apache bzw der Gruppe von Apache.

Was sind "normale" Rechte für einen Webserver mit ein wenig PHP und einem Upload? Wobei ich hinzufügen muss,
dass die Seite sehr unübersichtlich und schlecht programmiert wurde (nicht von mir).. Es lassen sich schlecht
verzeichnisweise Rechte setzen.
Rechte normal 660 bzw 770 oder eben eine Mischung je nachdem.

Ich frage das alles ur, weil ich da keine Sicherheitslücken programmieren will.
Ich würde mit keinem Server online gehen wo die website nur mit 777 läuft außer ich habe PHP wirklich sicher konfiguriert. Hast du das?

Server läuft auf aktuellem Debian und als FTP-Client nutze ich Cyberduck (Win).
Also Debian 6.0.0, Apache, PHP 5.3+ und welchem FTP Server?

Gruß Hitman
Arano
Arano 12.07.2011 um 23:20:04 Uhr
Goto Top
Guten Abend zusammen.

Zitat Wikipedia - Unix-Dateirechte
Ausführen
(engl. execute) Der Benutzer darf die Datei als Programm ausführen bzw. in das Verzeichnis wechseln und dort Dateien oder Unterverzeichnisse erreichen. Ohne das Lesen-Recht darf der Verzeichnisinhalt jedoch nicht ausgelesen werden. Dieses Recht wird oft durch den Buchstaben „x“ für englisch execute („ausführen“) dargestellt und daher auch X-Bit genannt.

Das kann dann so aus sehen:
arano@lamp:~/cpp$ ls -l test
insgesamt 576
-rwxr-x--- 1 arano arano   1331  3. Juli 19:33 pop3-cache.tmp
-rwxr-x--- 1 arano arano   2475  3. Juli 19:33 test.cpp
-rwxr-x--- 1 arano arano 140800  3. Juli 19:33 test.exe
-rwxr-x--- 1 arano arano  44269  3. Juli 19:33 test.obj
-rwxr-x--- 1 arano arano 393216  3. Juli 19:33 test.tds
arano@lamp:~/cpp$ chmod a-x test
arano@lamp:~/cpp$ ls -l test
ls: Zugriff auf test/test.obj nicht möglich: Keine Berechtigung
ls: Zugriff auf test/pop3-cache.tmp nicht möglich: Keine Berechtigung
ls: Zugriff auf test/test.cpp nicht möglich: Keine Berechtigung
ls: Zugriff auf test/test.tds nicht möglich: Keine Berechtigung
ls: Zugriff auf test/test.exe nicht möglich: Keine Berechtigung
insgesamt 0
-????????? ? ? ? ?             ? pop3-cache.tmp
-????????? ? ? ? ?             ? test.cpp
-????????? ? ? ? ?             ? test.exe
-????????? ? ? ? ?             ? test.obj
-????????? ? ? ? ?             ? test.tds
arano@lamp:~/cpp$ touch ./test/arano
touch: kann „./test/arano“ nicht berühren: Keine Berechtigung
arano@lamp:~/cpp$ 

Also kann das PHP-Script / der Webserver / dessen Benutzer auch keine Dateien in dem entsprechendem Ordner erstellen wenn das X-Bit nicht gesetzt ist.


~Arano
Hitman4021
Hitman4021 12.07.2011 um 23:31:28 Uhr
Goto Top
Zitat von @Arano:
> arano@lamp:~/cpp$ chmod a-x test
> arano@lamp:~/cpp$ ls -l test
> ls: Zugriff auf test/test.obj nicht möglich: Keine Berechtigung
> ls: Zugriff auf test/pop3-cache.tmp nicht möglich: Keine Berechtigung
> ls: Zugriff auf test/test.cpp nicht möglich: Keine Berechtigung
> ls: Zugriff auf test/test.tds nicht möglich: Keine Berechtigung
> ls: Zugriff auf test/test.exe nicht möglich: Keine Berechtigung
> insgesamt 0
> -????????? ? ? ? ?             ? pop3-cache.tmp
> -????????? ? ? ? ?             ? test.cpp
> -????????? ? ? ? ?             ? test.exe
> -????????? ? ? ? ?             ? test.obj
> -????????? ? ? ? ?             ? test.tds
> arano@lamp:~/cpp$ touch ./test/arano
> touch: kann „./test/arano“ nicht berühren: Keine Berechtigung
> arano@lamp:~/cpp$ 
Und nun hast du die gesamten X Rechte entfernt wodurch niemand mehr was machen darf...
Das ist mir schon klar. aber für diese Anwendung reicht meiner Meinung ein 770 auch und das ist möglicherweise noch einzuschränken je nachdem wie die User Apache/PHP/User den Gruppen zugenordnet sind und je nach PHP Konfiguration.

Gruß
Arano
Arano 12.07.2011 um 23:41:44 Uhr
Goto Top
Hi,

ja damit hast du natürlich recht !
und dagegen will und kann ich auch gar nichts sagen

Zitat von @Hitman4021:
> Zitat von @Bierkistenschlepper:
> ----
> Nachdem ich dann das Recht "Ausführen" aktiviert habe, ging es plötzlich. Ist das normal?
Nein!
Nur hiergegen hatte ich etwas face-wink
Also, das X-Bit muss schon auf dem entsprechendem Ordner gesetzt sein, deswegen ist es schon normal das es ohne nicht ging dafür aber mit.
Das wollte ich nur noch etwas erläutern. Dafür auch das Beispiel

Die Rechte 777 sollten am besten natürlich nicht gesetzt sein. Sondern, wie du es schon beschrieben hast, nur die Nötigsten für die entsprechenden Parteien.


~Arano