Oopsie | HTB Starting Point Writeup T2M02

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


  1. Mit welcher Art von Tool kann man den Webverkehr abfangen?

proxy


  1. Wie lautet der Pfad zu dem Verzeichnis auf dem Webserver, das eine Anmeldeseite liefert?
    /cdn-cgi/login
nmap scan
burpsuite site-map
login

  1. 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

login as guest

Nun sehen wir einiges mehr als vorher

admin page

Wenn wir uns jetzt mit den Developer-Tools die aktuellen Informationen ansehen, entdecken wir 2 Cookies, die wir auf der Seite erhalten haben.

cookie

Die Cookies sehen so aus, als könnte wir darüber eventuell mehr Rechte erhalten.


  1. 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.

uploads

Unter dem Reiter “Account” werden uns Informationen zu unserem Account angezeigt und wir sehen anhand der URL, dass jedem User eine ID zugewiesen ist.

guest account

Außerdem haben wir einen Cookie erhalten, der bestätigt, dass wir ein Gast sind

cookie

Wir probieren nun mit anderen IDs den Admin-Account zu finden.

admin user

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.

admin cookie

Anschließend kommen wir auf die Upload-Seite und haben die Möglichkeit eine Reverse-Shell hochzuladen

upload

  1. 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

get webshell

Damit die Shell funktioniert, müssen wir die IP und den Port auf etwas passendes ändern

edit shell

Nun können wir die bearbeitete Shell hochladen.

upload shell

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.

upload directory

Starten wir als nächstes erst einmal einen Listener auf den von uns angegebenen Port

listener

Direkt in das Verzeichnis /uploads kommen wir leider nicht.

forbidden

Probieren wir, unsere Datei direkt aufzurufen.

reverse shell success

Das hat funktioniert! Wir haben eine Shell!


  1. 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!

password

  1. Welche ausführbare Datei wird mit der Option "-group bugtracker" ausgeführt, um alle Dateien zu identifizieren, die der Gruppe bugtracker 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.


  1. 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
bugtracker suid

  1. Wofür steht SUID?

Set owner User ID


  1. 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

user-flag

root

root-flag