Sebastian Goertz: Welche Gefahr geht von chmod 777 aus?

Hallo,

das Problem ist wohl bekannt: Ordner und Dateien wurden via FTP hochgeladen und Zugriffsrechte sind auf 755 (Ordner) bzw. 644 (Dateien) gesetzt. Will ein PHP-Script nun schreiben, dann wird ihm der Zugriff verwehrt, weil es nicht Besitzer der Datei/des Ordners ist.

Vor der Vergabe von 777 als Zugriffsrecht wird in diversen Foren, Tutorials aus Sicherheitsgründen gewarnt. Ich selbst möchte auch (eigentlich) nicht mit Rechten um mich werfen, allerdings tauchen gerade ein paar Verständnisfragen auf.

Rahmenbedingung:

  • safe-mode ist OFF
  • open_basedir ist auf meinen Benutzeraccount gesetzt

Überlegung:
Die Zugriffsrechte betreffen nur dem System bekannte Benutzer, jemand müsste also sich bereits "im System" befinden, damit die Dateirechte überhaupt erst auf ihn angewendet werden.
Da den Usern des SharedHostings der Handlungsrahmen mit open_basedir eingeschränkt wird, kann nicht jeder andere User auf meine Dateien zugreifen.
So bleiben als User noch mein PHP-Script und mein FTP-Account.
Was spricht denn nun dagegen, die Dateirechte entsprechend hochzusetzen?

Viele Grüße,
Sebastian

  1. Hallo,

    wenn du kein sftp bentutzt wird dein ftp-passwort eh im klartext übertragen. ich weiß nicht wirklich, warum man zu sehr vor 777 warnen sollte. du kannst aber auch php selbst den ordner erstellen lassen. dann hat es schreibrechte (;-).

    Gruß

    jobo

    1. Hi!

      wenn du kein sftp bentutzt wird dein ftp-passwort eh im klartext übertragen. ich weiß nicht wirklich, warum man zu sehr vor 777 warnen sollte.

      Jemand der weiterer Kunde auf dem Webserver ist, muss nicht zwangsläufig den Netzwerkverkehr mitschneiden können. Und wenn er 777 vorfindet, braucht er das auch nicht. Nur weil jemand das eine kann (nämlich Man-in-the-middle - auch wenn es dafür besonderer Voraussetzungen bedarf), haeißt es nicht, dass es völlig sinnlos ist, sich gegen andere Szenarien zu schützen. Wenn man so argumentieren will, kann man gleich alles offen lassen, denn Root-Exploits werden sich wohl immer finden.

      Lo!

      1. Hallo,

        Hi!

        wenn du kein sftp bentutzt wird dein ftp-passwort eh im klartext übertragen. ich weiß nicht wirklich, warum man zu sehr vor 777 warnen sollte.

        Jemand der weiterer Kunde auf dem Webserver ist, muss nicht zwangsläufig den Netzwerkverkehr mitschneiden können. Und wenn er 777 vorfindet, braucht er das auch nicht. Nur weil jemand das eine kann (nämlich Man-in-the-middle - auch wenn es dafür besonderer Voraussetzungen bedarf), haeißt es nicht, dass es völlig sinnlos ist, sich gegen andere Szenarien zu schützen. Wenn man so argumentieren will, kann man gleich alles offen lassen, denn Root-Exploits werden sich wohl immer finden.

        Naja, es war die Überlegung, ob nicht andere Sicherheitslücken viel gravierender sind, die u.U. auch garnicht beeinflussbar sind. Wie kann denn ein Angreifer (auf dem System muss er sich ja befinden) denn anderes Unheil in einem 777-er Ordner anstellen, als die Daten dort zu überschreiben? Mit 755 kann er ja bereits lesen und ausführen. Und Lesen dürfte ja u.U. genau das sein, was er möchte, oder?

        Gruß

        jobo

        1. Hi!

          Naja, es war die Überlegung, ob nicht andere Sicherheitslücken viel gravierender sind, die u.U. auch garnicht beeinflussbar sind.

          Ja, aber irgendwo muss man anfangen, Lücken zu schließen und geschlossen zu halten.

          Wie kann denn ein Angreifer (auf dem System muss er sich ja befinden) denn anderes Unheil in einem 777-er Ordner anstellen, als die Daten dort zu überschreiben?

          Er könnte dort was hinlegen, das andere downloaden können - wenn das Verzeichnis sich im DocumentRoot befindet. Bei 777er Dateien, die er ungeprüft hochladen kann, kann er unter Umständen recht einfach das System unter seine Kontrolle bringen.

          Mit 755 kann er ja bereits lesen und ausführen. Und Lesen dürfte ja u.U. genau das sein, was er möchte, oder?

          Auch das kann reichen - und wenn auch nur als erster Schritt und man mit den gewonnenen Daten weiteres anstellt. Deswegen ist es ja sinnvoll, sich die Verhältnisse anzuschauen, und zu prüfen, ob xx0 oder gar x00 reicht.

          Lo!

  2. Hi!

    das Problem ist wohl bekannt: Ordner und Dateien wurden via FTP hochgeladen und Zugriffsrechte sind auf 755 (Ordner) bzw. 644 (Dateien) gesetzt. Will ein PHP-Script nun schreiben, dann wird ihm der Zugriff verwehrt, weil es nicht Besitzer der Datei/des Ordners ist.

    Nunja, das hängt stark von der Server-Konfiguration ab. Unter welchem Benutzer wurde per FTP die Datei angelegt? Unter welchem Benutzer läuft das PHP-Script? Das ist hauptsächlich bei unzulänglichen Hosting-Konfigurationen problematisch, wo der Apache unter einer einzigen Kennung alle Kunden bedient. Hat man hingegen PHP unter einem individuellen User laufen, so kann man schon deutlich besser individuelle Rechte konfigurieren.

    Vor der Vergabe von 777 als Zugriffsrecht wird in diversen Foren, Tutorials aus Sicherheitsgründen gewarnt.

    Leider wird auch immer wieder nicht beachtet, dass nicht nur die Rechte interessant sind, sondern die Benutzer maßgeblich für eine genauere Betrachtung. 0777 ist schnell geschrieben und das Problem "gelöst". Die Besitzverhältnis-Betrachtung bleibt auf der Strecke.

    Rahmenbedingung:

    • safe-mode ist OFF
    • open_basedir ist auf meinen Benutzeraccount gesetzt

    Das sind zwei PHP-Einstellungen. Der Safe-Mode versucht das Alles-unter-einer-Kennung-Problem zu lösen, und open_basedir hat mit den Betriebssystem-Rechten nichts weiter zu tun.

    Die Zugriffsrechte betreffen nur dem System bekannte Benutzer, jemand müsste also sich bereits "im System" befinden, damit die Dateirechte überhaupt erst auf ihn angewendet werden.

    Ja, vor allem geht es um die anderen Benutzer, die sich ebenfalls im System tummeln. Diese sollten mit ihren Kennungen nicht in "meinem" Bereich rumfummeln dürfen. Es gilt zunächst ein Benutzer- und Gruppen-Konzept auszuarbeiten. Auch der PHP-Benutzer muss nicht überall schreiben können. Es reicht, wenn er per Gruppe Leseberechtigung erhält und in ausgewählten Verzeichnissen seine Daten ablegen kann. Sprich: Besitzer sollte die FTP-Kennung sein, der PHP-Benutzer kommt in die selbe Gruppe. 0750 und 0640 wäre für Verzeichnisse und Dateien ausreichend. Dinge, die der Apache direkt ausliefert, müssen für ihn lesbar sein. Also bekommen diese 0755 und 0644. Und da wo die PHP-Kennung schreiben soll, kommt noch das Gruppen-w hinzu.

    Da den Usern des SharedHostings der Handlungsrahmen mit open_basedir eingeschränkt wird, kann nicht jeder andere User auf meine Dateien zugreifen.

    So die Theorie. In der Praxis kann es Lücken geben. Du betrachtest außerdem nur die PHP-Nutzer. Für alle anderen Benutzer/Anwendungen gilt keine open_basedir-Beschränkung.

    So bleiben als User noch mein PHP-Script und mein FTP-Account.
    Was spricht denn nun dagegen, die Dateirechte entsprechend hochzusetzen?

    Die Nicht-Notwendigkeit und immer noch Sicherheitsaspekte. Man sollte es Angreifern schon noch etwas schwerer machen, so dass sie einen Root-Exploit benötigen, und nicht einfach nur das open_basedir umgehen müssen.

    Lo!