Einleitung
Bei der Privilege Escalation wird zwischen zwei Szenarien unterschieden:
- Horizontale Privilege Escalation: Der Angreifer hat dieselben Berechtigungen wie das Opfer (z. B. Benutzer in einem System), aber er erhält Zugriff auf andere Ressourcen, die ihm normalerweise nicht zugänglich sind.
- Vertikale Privilege Escalation: Der Angreifer versucht, auf ein höher privilegiertes Konto zuzugreifen, um mehr Rechte zu erlangen.
SUID-Binaries
Nachdem es dir nicht gelungen ist, Authentifizierungsdaten zu erhalten, musst du andere Wege beschreiten, um die Berechtigungen eines anderen Benutzers zu erlangen.
Eine Möglichkeit ist, dass der Benutzer www-data Binaries oder Skripte mit den Berechtigungen des Besitzers der Datei ausführen kann.
Das allein reicht aber noch nicht.
Zusätzlich muss die Datei die Möglichkeit bieten, Systembefehle auszuführen.
Diese werden dann nämlich mit den Rechten des Besitzers ausgeführt.
Ob es so eine Binary oder so ein Skript gibt, findest du mit folgendem Befehl heraus:
find / -type f -perm -u=s 2>/dev/null
Dabei untersucht der Befehl find das Dateisystem, wobei die Suche im Wurzelverzeichnis / beginnt und damit das gesamte Dateisystem umfasst.
Mit der Option -type f beschränkt sich die Suche auf reguläre Dateien.
Die Option -perm -u=s gibt an, dass nur Dateien gefunden werden soll, bei denen das SUID-Bit gesetzt ist.
Mit 2>/dev/null werden Fehlermeldungen unterdrückt, die durch den Befehl generiert werden könnten.
Das SUID-Bit (Set User ID) erlaubt es einer Datei, mit den Berechtigungen des Besitzers der Datei ausgeführt zu werden, anstatt mit den Berechtigungen des Benutzers, der die Datei ausführt.
Stelle wieder mit dem Befehl nc -lp <Port> eine Reverse Shell zum LUPFER her.
Dafür musst du die Seite https://lupfer.pentest.samsmart.hosts.openinc.de/usermanagement erneut laden.
Es gibt also Dateien, die mit den Rechten des Besitzers ausgeführt werden. Nun musst du noch herausfinden, ob diese Binaries ausnutzbar sind. Eine gute Quelle dafür ist GTFOBins. Diese Webseite enthält eine Sammlung von Unix-Binaries, bei denen eine Rechteausweitung möglich ist.
Keine der aufgeführten Binaries lässt sich also trotz des gesetzten SUID-Bits einfach ausnutzen. Daher suchst du als Nächstes, ob du gewisse Befehle mit Root-Rechten ausführen kannst und ob dafür ein Passwort benötigt wird.
Befehl 'sudo'
Um die Berechtigungen des aktuellen Benutzers anzuzeigen, gibt es folgenden Befehl:
sudo -l
Interessant ist der Eintrag (ALL) NOPASSWD: /usr/bin/python3 -m pdb /var/www/html/lupfer/lupfer.py.
Mit dem Befehl wird der Python-Debugger pdb ausgeführt.
Ein Debugger ist ein Software-Tool, das von Entwicklern zum Testen und zur Fehlersuche in Programmen verwendet wird. Er ermöglicht es ihnen, die Ausführung eines Programms zu überwachen und zu steuern, den Code Zeile für Zeile durchzugehen, Variablen zu überprüfen und Fehler (Bugs) oder unerwartetes Verhalten aufzuspüren.
Damit der Befehl mit Root-Rechten ausgeführt wird, muss der Befehl sudo vorangestellt werden:
sudo /usr/bin/python3 -m pdb /var/www/html/lupfer/lupfer.py
Wie sich dies für eine Privilege Escalation ausnutzen lässt, erfährst du im nächsten Abschnitt. Hier ist nur noch der Hinweis, dass es noch weitere Möglichkeiten gibt, um seine Rechte auszuweiten.
