Einführung
Die Privilegieneskalation ist eine kritische Phase beim Penetration Testing und Ethical Hacking. Sobald ein Angreifer einen ersten Zugriff mit niedrigen Rechten auf ein System erlangt hat, ist das nächste Ziel oft die Erhöhung der Rechte auf einen Administrator- oder root-Benutzer. Eine erfolgreiche Privilegieneskalation hängt stark von einer sorgfältigen System-Enumeration ab – dem Sammeln von so vielen Informationen wie möglich über die Konfiguration des Zielsystems, laufende Prozesse, Dateiberechtigungen und installierte Software.
Dieses Modul soll eine Grundregel festigen: Enumeration kommt vor der Exploitation. Die meisten erfolgreichen Privilegieneskalationen sind keine Magie; sie basieren darauf, eine bereits vorhandene Fehlkonfiguration oder Beziehung zu erkennen.
Um diesen mühsamen Prozess zu rationalisieren, verwenden Sicherheitsexperten automatisierte Enumerationsskripte. Eines der beliebtesten und branchenüblichen Werkzeuge ist LinPEAS (Linux Privilege Escalation Awesome Script). LinPEAS sucht automatisch nach möglichen Pfaden zur Eskalation von Privilegien auf Linux/Unix/macOS-Hosts und hebt Ergebnisse mithilfe eines farbcodierten Systems hervor, um die Wahrscheinlichkeit eines erfolgreichen Exploits anzuzeigen.
Automatisierung ist hilfreich, da moderne Systeme zu viele bewegliche Teile haben, um sie bei jedem Einsatz vollständig manuell zu überprüfen. Die Skriptausgabe erfordert jedoch immer noch eine menschliche Interpretation.
In diesem Lab simulieren Sie ein Post-Exploitation-Szenario. Sie agieren als Penetration Tester, der das LinPEAS-Skript von seiner „Angreifer“-Maschine auf eine „Ziel“-Maschine übertragen, es ausführen und die Ausgabe analysieren muss, um hochwahrscheinliche Eskalationsvektoren zu identifizieren.
Lokalen Webserver für die Übertragung starten
In diesem Schritt lernen Sie, wie Sie Dateien hosten, damit sie auf eine Zielmaschine übertragen werden können. Während eines Penetration Tests haben Sie oft ein nützliches Skript (wie LinPEAS) auf Ihrer lokalen Maschine, benötigen aber eine Möglichkeit, es auf den kompromittierten Zielserver zu bringen.
Eine schnelle und integrierte Methode zum Hosten von Dateien unter Linux ist die Verwendung des HTTP-Server-Moduls von Python. Damit können Sie jedes Verzeichnis sofort in einen leichtgewichtigen Webserver verwandeln.
Für dieses Lab haben wir zwei Umgebungen innerhalb Ihres Arbeitsbereichs simuliert. Das Verzeichnis ~/project/attacker repräsentiert Ihre lokale Maschine, die das Skript linpeas.sh enthält. Das Verzeichnis ~/project/target repräsentiert den kompromittierten Server, auf den Sie das Skript herunterladen müssen.
Navigieren Sie zunächst in das Angreifer-Verzeichnis, in dem sich das Skript befindet:
cd ~/project/attacker
Listen Sie den Inhalt des Verzeichnisses auf, um zu überprüfen, ob das Skript vorhanden ist:
ls -l
Sie sollten linpeas.sh in der Ausgabe sehen. Starten Sie nun einen Python-HTTP-Server auf Port 8080. Wir verwenden das Symbol & am Ende des Befehls, um den Server im Hintergrund auszuführen, sodass Sie das Terminalfenster weiterhin verwenden können:
python3 -m http.server 8080 &
Sie sehen eine Ausgabe ähnlich der folgenden, die anzeigt, dass der Server läuft:
Serving HTTP on 0.0.0.0 port 8080 (http://0.0.0.0:8080/) ...
Drücken Sie einmal Enter, um Ihre Terminal-Eingabeaufforderung zurückzuerhalten. Ihr lokaler Webserver hostet nun aktiv die Datei linpeas.sh.
LinPEAS auf das Ziel herunterladen
In diesem Schritt agieren Sie als die kompromittierte Zielmaschine und laden das Skript vom Webserver des Angreifers herunter.
Linux-Systeme haben standardmäßig Befehlszeilen-Download-Dienstprogramme wie wget oder curl installiert. Diese Werkzeuge sind von unschätzbarem Wert, um Skripte und Exploits auf ein Zielsystem zu ziehen.
Navigieren Sie zunächst in das simulierte Zielverzeichnis:
cd ~/project/target
Verwenden Sie nun den Befehl wget, um das Skript linpeas.sh vom lokalen Webserver herunterzuladen, den Sie im vorherigen Schritt gestartet haben. Da der Server für dieses Lab in derselben Umgebung läuft, verwenden Sie localhost als Adresse:
wget http://localhost:8080/linpeas.sh
Sie sehen eine Ausgabe, die den Fortschritt des Downloads anzeigt:
--2026-10-25 10:00:00-- http://localhost:8080/linpeas.sh
Resolving localhost (localhost)... 127.0.0.1
Connecting to localhost (localhost)|127.0.0.1|:8080... connected.
HTTP request sent, awaiting response... 200 OK
Length: 645 [text/x-sh]
Saving to: ‘linpeas.sh’
linpeas.sh 100%[===================>] 645 --.-KB/s in 0s
2026-10-25 10:00:00 (15.4 MB/s) - ‘linpeas.sh’ saved [645/645]
Überprüfen Sie, ob die Datei erfolgreich heruntergeladen wurde, indem Sie den Verzeichnisinhalt auflisten:
ls -l
Sie sollten nun linpeas.sh in Ihrem Verzeichnis ~/project/target sehen.
Das Skript ausführen
In diesem Schritt bereiten Sie das LinPEAS-Skript vor und führen es aus.
Das Ausführen des Tools ist nur der Anfang. Der wahre Wert liegt darin, zu erkennen, welche Ergebnisse normales Rauschen sind und welche auf praktische Eskalationspfade hinweisen.
Wenn Sie ein Skript aus dem Internet herunterladen oder über einen Webserver übertragen, entfernt Linux aus Sicherheitsgründen die „ausführbare“ Berechtigung. Wenn Sie versuchen, es sofort auszuführen, erhalten Sie einen Fehler vom Typ „Permission denied“.
Um dies zu beheben, müssen Sie den Befehl chmod (change mode) verwenden, um die ausführbare Berechtigung (+x) zur Datei hinzuzufügen.
Führen Sie den folgenden Befehl aus, um das Skript ausführbar zu machen:
chmod +x linpeas.sh
Wenn Sie erneut ls -l ausführen, werden Sie feststellen, dass sich die Dateiberechtigungen geändert haben (normalerweise wird rwx für den Benutzer angezeigt) und der Dateiname in Ihrem Terminal möglicherweise in einer anderen Farbe erscheint, was darauf hinweist, dass es sich nun um ein ausführbares Programm handelt.
Führen Sie nun das Skript aus. Unter Linux müssen Sie unter dem Pfad ./ voranstellen, um eine ausführbare Datei auszuführen, die sich in Ihrem aktuellen Verzeichnis befindet. Dies teilt dem System genau mit, wo das Programm zu finden ist:
./linpeas.sh
Sie sehen, wie das Skript ausgeführt wird und verschiedene Systemprüfungen ausgibt. In einem realen Szenario gibt LinPEAS Tausende von Zeilen an Informationen aus. Für dieses Lab verwenden wir eine vereinfachte Mock-Version, die die Kernkonzepte hervorhebt.
[+] LinPEAS - Linux Privilege Escalation Awesome Script (Mock Version)
========================================================================
[?] Basic System Information
Linux labex-vm 5.15.0-1040-aws #45-Ubuntu SMP ...
[!] HIGH PROBABILITY PRIVILEGE Escalation VECTORS
[+] SUID files:
-rwsr-xr-x 1 root root 43K /usr/bin/sudo
-rwsr-xr-x 1 root root 32K /usr/bin/su
-rwsr-xr-x 1 root root 15K /usr/bin/custom_backup (Unknown SUID)
[?] Checking sudo permissions
User labex may run the following commands on this host:
(ALL : ALL) ALL
[+] Enumeration Completed.
Nehmen Sie sich einen Moment Zeit, um die Ausgabe zu betrachten. Beachten Sie, wie die Informationen in Abschnitte wie „Basic System Information“ und „SUID files“ kategorisiert werden.
Hochwahrscheinliche Vektoren analysieren
In diesem Schritt lernen Sie, wie Sie die von Enumerationsskripten generierte Ausgabe verwalten und analysieren.
Da echte Enumerationsskripte eine überwältigende Menge an Text erzeugen, lesen Penetration Tester diesen selten direkt vom Terminalbildschirm ab. Stattdessen leiten sie die Ausgabe in eine Textdatei um, damit sie diese später mit Werkzeugen wie grep durchsuchen können.
Lassen Sie uns das Skript erneut ausführen, aber dieses Mal verwenden wir den Operator >, um die Ausgabe in eine Datei namens results.txt umzuleiten:
./linpeas.sh > results.txt
Beachten Sie, dass diesmal nichts auf dem Bildschirm ausgegeben wurde. Der gesamte Text wurde direkt in results.txt geschrieben.
Lassen Sie uns nun die Ergebnisse analysieren. LinPEAS ist bekannt für seine Farbcodierung, bei der ROT/GELB-Text eine 99-prozentige Wahrscheinlichkeit für einen Privilegieneskalationsvektor anzeigt. In unserer Ausgabe wurde eine „Unknown SUID“-Datei markiert.
SUID (Set owner User ID up on execution) ist eine spezielle Art von Dateiberechtigung, die einer Datei zugewiesen wird. Wenn eine Datei mit SUID ausgeführt wird, läuft sie mit den Privilegien des Dateieigentümers (oft root) und nicht des Benutzers, der sie ausgeführt hat. Wenn eine benutzerdefinierte oder anfällige Binärdatei das SUID-Bit gesetzt hat, können Angreifer dies ausnutzen, um eine root-Shell zu erhalten.
Verwenden Sie den Befehl grep, um die Datei results.txt gezielt nach dem Schlüsselwort SUID zu durchsuchen:
grep "SUID" results.txt
Sie sollten die folgende Ausgabe sehen:
[+] SUID files:
-rwsr-xr-x 1 root root 15K /usr/bin/custom_backup (Unknown SUID)
Durch das Filtern der Ausgabe haben Sie erfolgreich eine höchst verdächtige Datei (/usr/bin/custom_backup) identifiziert. Bei einem echten Penetration Test wäre Ihr nächster Schritt, diese spezifische Binärdatei zu untersuchen, um festzustellen, ob sie ausgenutzt werden kann, um Ihnen Root-Zugriff zu gewähren.
Zusammenfassung
In diesem Lab haben Sie den kritischen Prozess der automatisierten System-Enumeration zur Privilegieneskalation kennengelernt. Sie haben gelernt, wie man Dateien lokal mit dem integrierten HTTP-Server-Modul von Python hostet. Sie haben außerdem gelernt, wie man Dateien mit Befehlszeilen-Tools wie wget auf eine Zielmaschine überträgt. Darüber hinaus haben Sie geübt, Dateiberechtigungen zu ändern, um Skripte ausführbar zu machen und diese auszuführen. Schließlich haben Sie gelernt, wie man die Skriptausgabe in eine Datei umleitet und grep verwendet, um die Daten auf hochwahrscheinliche Eskalationsvektoren, wie z. B. falsch konfigurierte SUID-Binärdateien, zu analysieren.
Diese grundlegenden Fähigkeiten sind für jeden Sicherheitsexperten oder Penetration Tester unerlässlich, wenn es darum geht, die interne Sicherheitslage eines Linux-Systems zu bewerten.



