Oopsie | HTB Starting Point Writeup T2M02
In diesem Writeup geht es um die Starting Point Maschine "Oopsie" auf Hack The Box.
Wie immer, dass passende Video zum Beitrag hier: https://youtu.be/BPIrWWNt7e8
- Mit welcher Art von Tool kann man den Webverkehr abfangen?
proxy
- Wie lautet der Pfad zu dem Verzeichnis auf dem Webserver, das eine Anmeldeseite liefert?
/cdn-cgi/login
- Was kann in Firefox geändert werden, um Zugriff auf die Upload-Seite zu erhalten?
cookie
Als ersten loggen wir uns über den Button “Login as Guest” ein
Nun sehen wir einiges mehr als vorher
Wenn wir uns jetzt mit den Developer-Tools die aktuellen Informationen ansehen, entdecken wir 2 Cookies, die wir auf der Seite erhalten haben.
Die Cookies sehen so aus, als könnte wir darüber eventuell mehr Rechte erhalten.
- Wie lautet die Zugangskennung des Admin-Benutzers?
34322
Mit unseren aktuellen Rechten können wir leider nicht auf das Upload-Modul zugreifen. Wir müssen also versuchen, die genannten Admin-Rechte zu bekommen.
Unter dem Reiter “Account” werden uns Informationen zu unserem Account angezeigt und wir sehen anhand der URL, dass jedem User eine ID zugewiesen ist.
Außerdem haben wir einen Cookie erhalten, der bestätigt, dass wir ein Gast sind
Wir probieren nun mit anderen IDs den Admin-Account zu finden.
Bingo! hier erhalten wir alle Infos, was wir dafür brauchen um uns als Admin auszugeben. Wir können jetzt unsere Cookie Werte auf die zu sehenden Admin Werte anpassen.
Anschließend kommen wir auf die Upload-Seite und haben die Möglichkeit eine Reverse-Shell hochzuladen
- In welchem Verzeichnis wird eine hochgeladene Datei auf dem Server angezeigt?
/uploads
Wir versuchen nun die Upload Funktion zu nutzen, um eine Reverse-Shell hochzuladen und Zugriff auf das System zu erhalten.
Dafür gibt es in ParrotOS bereits fertige Shells die wir anpassen können
Damit die Shell funktioniert, müssen wir die IP und den Port auf etwas passendes ändern
Nun können wir die bearbeitete Shell hochladen.
Um die Shell starten zu können, müssen wir herausfinden, wo die hochgeladenen Dateien abgelegt werden. Mit Gobuster
entdecken wir, dass es ein Verzeichnis mit dem Namen /uploads
gibt.
Starten wir als nächstes erst einmal einen Listener auf den von uns angegebenen Port
Direkt in das Verzeichnis /uploads
kommen wir leider nicht.
Probieren wir, unsere Datei direkt aufzurufen.
Das hat funktioniert! Wir haben eine Shell!
- Wie heißt die Datei, die das Passwort enthält, das für den Benutzer
robert
freigegeben ist?
db.php
Starten wir damit, alles zu finden was passw*
enthält.
Tatsächlich finden wir ein Password. prüfen wir die User auf dem System und schauen ob es eventuell mehrmals verwendet wird
cat /etc/passwd
Um su
nutzen zu können müssen wir zuerst eine ordentliche Shell spawnen
python3 -c 'import pty;pty.spawn("/bin/bash")'
Leider ist es nicht das Passwort für den User robert
Schauen wir uns also die anderen Dateien nochmal genauer an. Bei db.php
werden wir fündig!
- Welche ausführbare Datei wird mit der Option "
-group bugtracker
" ausgeführt, um alle Dateien zu identifizieren, die der Gruppebugtracker
gehören?
find
Prüfen wir nun zuerst, welche Tools der User robert
mit root rechten ausführen darf.
Leider ist der User nicht im Sudo file enthalten. Allerdings ist der User Mitglied der Gruppe bugtracker
Checken wir also, ob es eine Binary für diese Gruppe gibt.
- Unabhängig davon, welcher Benutzer das Bugtracker-Programm ausführt, welche Benutzerrechte werden für die Ausführung verwendet?
root
Wir prüfen, in welchem Kontext die Binary ausgeführt werden kann und sehen, dass eine suid
gesetzt ist. Da die Datei dem root user gehört, wird sie in diesem Kontext ausgeführt.
ls -la /usr/bin/bugtracker && file /usr/bin/bugtracker la /usr/bin/bugtracker && file /usr/bin/bugtracker
- Wofür steht SUID?
Set owner User ID
- Wie lautet der Name der ausführbaren Datei, die auf unsichere Weise aufgerufen wird?
cat
Wenn wir uns anschauen, wie das Tool funktioniert, sehen wir, dass mit cat
gearbeitet wird.
Flags
Wir können versuchen dem System eine andere Binary für cat
vorzutäuschen. Dafür erstellen wir im /tmp
Ordner eine Datei namens cat
mit dem Inhalt /bin/sh
cd /tmp
echo "/bin/sh" > cat
Nun machen wir die Datei ausführbar
chmod +x cat
Als nächstes geben mir das /tmp
Verzeichnis in der PATH Environment Variable an. (Hier geben wir an, welche Verzeichnisse ausführbare Programme beinhalten.)
export PATH=/tmp:$PATH
Wenn wir jetzt den bugtracker
aus dem /tmp
Verzeichnis ausführen, wird auf unser selbst erstelltes cat
zugegriffen und wir sollten eine root shell
erhalten.
Jetzt können wir die beiden Flags suchen.
user
root