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
robertfreigegeben 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 Gruppebugtrackergehö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" > catNun machen wir die Datei ausführbar
chmod +x catAls 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:$PATHWenn 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
