Im letzten Teil der Blog-Post Reihe zum Venus-Lab der Plattform HackMyVM.eu geht es um die Level 41 – 50.
Falls Ihr euch jetzt fragt, was HackMyVM und das Venus-Lab sind, empfehle ich euch, mit dem ersten Post der Reihe zu starten:
HackMyVM Venus Walkthroug 1/5.
Damit Ihr euch mit dem Lab verbinden könnt, müsst Ihr euch auf HackMyVM.eu registrieren. Nach der kostenlosen Registrierung öffnet einfache ein Terminal und verbindet euch mit ssh zum Lab. Die Zugangsdaten findet Ihr unter https://hackmyvm.eu/venus/
Level 41
Mission: User sarah uses header in http://localhost/key.php
Sarah benutzt Header in der Kommunikation mit http://localhost/key.php
Dann rufen wir die URL doch einfach mal mit curl auf, um zu sehen, was uns erwartet:
curl http://localhost/key.php
Key header is true?
Der Server frag uns, ob das Feld „Key“ im Header true ist. Das war bei unserer ersten Anfrage natürlich nicht der Fall. Mit der Option -H können wir curl aber Header für den Aufruf mit geben. Setzen wir also den Header „Key: true“:
curl -H "Key: true" http://localhost/key.php
Schon belohnt uns der Server mit dem Passwort für Level 42.
Level 42
Mission: The password of mercy is hidden in this directory.
Das Passwort für das nächste Level ist also in diesem Verzeichnis versteckt. Dann schauen wir mal, was wir im Verzeichnis finden:
la -la
drwxr-x--- 2 root sarah 4096 Apr 7 06:00 .
drwxr-xr-x 1 root root 4096 Apr 7 05:55 ..
-rw-r----- 1 root sarah 16 Apr 7 06:00 ...
-rw-r--r-- 1 sarah sarah 220 Aug 4 2021 .bash_logout
-rw-r--r-- 1 sarah sarah 3526 Aug 4 2021 .bashrc
-rw-r--r-- 1 sarah sarah 807 Aug 4 2021 .profile
-rw-r----- 1 root sarah 31 Apr 7 05:55 flagz.txt
-rw-r----- 1 root sarah 175 Apr 7 05:55 mission.txt
Wenn man nicht genau hin sieht, kann man die Versteckte Datei leicht übersehen, aber wir als Profis erkennen natürlich sofort die Datei ‚…‘
cat ...
Und schon haben wir das Passwort für das nächste Level.
Level 43
Mission: User mercy is always wrong with the password of paula.
Mercy kann sich anscheinend nicht das Passwort für Paula merken. Schauen wir mal nach, was für Dateien wir so finden:
ls -la
drwxr-x--- 2 root mercy 4096 Apr 7 06:00 .
drwxr-xr-x 1 root root 4096 Apr 7 05:55 ..
-rw-r----- 1 root mercy 133 Apr 7 06:00 .bash_history
-rw-r--r-- 1 mercy mercy 220 Aug 4 2021 .bash_logout
-rw-r--r-- 1 mercy mercy 3526 Aug 4 2021 .bashrc
-rw-r--r-- 1 mercy mercy 807 Aug 4 2021 .profile
-rw-r----- 1 root mercy 31 Apr 7 05:55 flagz.txt
-rw-r----- 1 root mercy 190 Apr 7 05:55 mission.txt
Zwar finden wir keine Passwort-Datei, in der Mercy das Passwort für Paula gespeichert hat, aber dafür etwas anderes, was genau so gut ist: die Datei ‚.bash_history‘. Mit dem Befehl ‚history‘ können wir uns somit die letzten Kommandozeilen-Eingaben anzeigen lassen:
history
Eine Zeile der Ausgabe sieht doch sehr nach dem Passwort für das nächste Level aus.
Level 44
Mission: The user karla trusts me, she is part of my group of friends.
Karla ist in der Gruppe unserer Freunde. Dann schauen wir mal, in welchen Gruppen wir als Paula sind:
groups
paula hidden
Wir sind in den Gruppen ‚paula‘ und ‚hidden‘. Die Gruppe ‚hidden‘ sieht an dieser Stelle vielversprechend aus. Dann schauen wir mal, welche Dateien der Gruppe ‚hidden‘ zugeordnet sind:
find / -group hidden 2>/dev/null
/usr/src/.karl-a
Es ist nur eine Datei der entsprechenden Gruppe zu finden. Schauen wir uns doch einfach mal den Inhalt dieser Datei an:
cat /usr/src/.karl-a
Das sieht doch sehr nach dem Passwort für das nächste Level aus.
Level 45
Mission: User denise has saved her password in the image.
Denise hat das Passwort für das nächste Level in einem Bild gespeichert. Wie so oft schauen wir als erstes, was für Dateien sich im Home-Verzeichnis befinden:
ls -la
drwxr-x--- 2 root karla 4096 Apr 7 06:00 .
drwxr-xr-x 1 root root 4096 Apr 7 05:55 ..
-rw-r--r-- 1 karla karla 220 Aug 4 2021 .bash_logout
-rw-r--r-- 1 karla karla 3526 Aug 4 2021 .bashrc
-rw-r--r-- 1 karla karla 807 Aug 4 2021 .profile
-rw-r----- 1 root karla 31 Apr 7 05:55 flagz.txt
-rw-r----- 1 root karla 176 Apr 7 05:55 mission.txt
-rw-r----- 1 root karla 32946 Apr 7 06:00 yuju.jpg
Tatsächlich gibt es eine Bild-Datei mit dem Namen ‚yuju.jpg‘. Auch die Überprüfung des Dateiformats mittels ‚file‘ bestätigt, dass es sich um eine JPEG-Datei handelt:
file yuju.jpg
yuju.jpg: JPEG image data, JFIF standard 1.01, resolution (DPI), density 96x96, segment length 16, Exif Standard: [TIFF image data, big-endian, direntries=4], baseline, precision 8, 442x463, components 3
Bevor wir jetzt davon ausgehen, dass das Passwort mit irgendwelchen kryptografischen Steganographie-Verfahren in der Bild-Datei versteckt wurde, werfen wir doch einen Blick in die Exif-Daten des Bildes:
exiftool yuyu.jpg
Und tatsächlich finden wir im About-Tag etwas, was sehr nach dem Passwort für das nächste Level aussieht.
Level 46
Mission: The user zora is screaming doas!
Wenn Zora ‚doas‘ schreit, benutzen wir es doch einfach:
doas
usage: doas [-Lns] [-C config] [-u user] command [args]
Der Befehl erwartet ein Kommando, das ausgeführt werden soll. Außerdem kann man einen User angeben, unter dem das Kommando ausgeführt wird. Wenn wir also die Bash mit dem Benutzer ‚zora‘ ausführen können, wären wir im nächsten Level:
doas -u zora /bin/bash
Jetzt müssen wir nur noch unser eigenes Passwort (das von ‚denise‘) eingeben, und sind im nächsten Level!
Level 47
Mission: The user belen has left her password in venus.hmv
Der Missionstext legt nahe, dass Belen das Passwort in einer Datei namens ‚venus.hmv‘ gespeichert hat.
Schauen wir als erstes mal nach, was sich im Home-Verzeichnis befindet:
ls -la
drwxr-x--- 2 root zora 4096 Apr 7 06:00 .
drwxr-xr-x 1 root root 4096 Apr 7 05:55 ..
-rw-r--r-- 1 zora zora 220 Aug 4 2021 .bash_logout
-rw-r--r-- 1 zora zora 3526 Aug 4 2021 .bashrc
-rw-r--r-- 1 zora zora 807 Aug 4 2021 .profile
-rw-r----- 1 root zora 31 Apr 7 05:55 flagz.txt
-rw-r----- 1 root zora 173 Apr 7 05:55 mission.txt
-rw-r----- 1 root zora 16 Apr 7 06:00 zora_pass.txt
Keine Datei namens ‚venus.hmv‘. Dann suchen wir doch einfach Systemweit nach der Datei:
find / -name venus.hmv 2>/dev/null
Wieder kein Erfolg. Die Datei scheint es nicht zu geben. Vielleicht ist ‚venus.hmv‘ ja gar keine Datei, sondern eine URL. Das lässt sich mit curl ja ziemlich einfach heraus finden:
curl venus.hmv
Tatsächlich bekommen wir als Rückgabe das Passwort für das nächste Level.
Level 48
Mission: It seems that belen has stolen the password of the user leona…
Schauen wir wieder als erstes danach, welche Dateien wir im Home-Verzeichnis von Belen finden:
ls -la
drwxr-x--- 2 root belen 4096 Apr 7 06:00 .
drwxr-xr-x 1 root root 4096 Apr 7 05:55 ..
-rw-r--r-- 1 belen belen 220 Aug 4 2021 .bash_logout
-rw-r--r-- 1 belen belen 3526 Aug 4 2021 .bashrc
-rw-r--r-- 1 belen belen 807 Aug 4 2021 .profile
-rw-r----- 1 root belen 31 Apr 7 05:55 flagz.txt
-rw-r----- 1 root belen 197 Apr 7 05:55 mission.txt
-rw-r----- 1 root belen 32 Apr 7 06:00 stolen.txt
Hier sieht die Datei ’stolen.txt‘ vielversprechend aus. Schauen wir uns den Inhalt an:
cat stolen.txt
$1$leona$lhWp56YnWAMz6z32Bw53L0
Die Zeichenfolge $1$ am Anfang des Strings sagt uns, dass es sich um einen md5crypt-format handelt.
Speichern wir den String in eine Lokale Datei und lassen JohnTheRipper mal schauen, ob er den passenden Plaintext zum Hash findet:
john --format=md5crypt --wordlist=/usr/share/wordlists/rockyou.txt stolen.txt
John hat seine Arbeit gut gemacht und uns das Passwort für Level 49 geliefert.
Level 49
Mission: User ava plays a lot with the DNS of venus.hmv lately…
Ava spielt also mit dem DNS-Eintrag von venus.hmv. Dann schauen wir doch in den ‚bind‘-Ordner, in dem sich die lokalen DNS-Einträge befinden:
ls -la /etc/bind
drwxr-sr-x 2 root bind 4096 Apr 7 06:00 .
drwxr-xr-x 1 root root 4096 Apr 8 18:33 ..
-rw-r--r-- 1 root root 1991 Mar 14 14:25 bind.keys
-rw-r--r-- 1 root root 237 Mar 14 14:25 db.0
-rw-r--r-- 1 root root 271 Mar 14 14:25 db.127
-rw-r--r-- 1 root root 237 Mar 14 14:25 db.255
-rw-r--r-- 1 root root 353 Mar 14 14:25 db.empty
-rw-r--r-- 1 root root 270 Mar 14 14:25 db.local
-rw-r--r-- 1 root bind 613 Apr 7 06:00 db.venus.hmv
-rw-r--r-- 1 root bind 463 Mar 14 14:25 named.conf
-rw-r--r-- 1 root bind 498 Mar 14 14:25 named.conf.default-zones
-rw-r--r-- 1 root bind 307 Apr 7 06:00 named.conf.local
-rw-r--r-- 1 root bind 219 Apr 7 06:00 named.conf.options
-rw-r----- 1 bind bind 100 Apr 7 05:55 rndc.key
-rw-r--r-- 1 root root 1317 Mar 14 14:25 zones.rfc1918
Hier springt sofort die Datei ‚db.venus.hmv‘ ins Auge. Wenn man sich den Inhalt genau anschaut, findet man das Passwort für das nächste Level.
Level 50
MIssion: The password of maria is somewhere…
Das Passwort des Benutzers Maria und damit das Passwort des letzten Levels ist irgendwo… Der Missionstext suggeriert, dass wir das Passwort von Maria schon irgendwo benutzt haben und das stimmt auch, aber anders als man es vermuten mag… Ich sage nur so viel: Schaut euch an, wie ihr an die Passwörter der letzten Level gekommen seid.
Das waren die letzten 10 Level des Venus-Labs auf HackMyVM.eu
Ich hoffe, ihr hattet damit genau so viel Spaß wie ich. Von mir gibt es ganz klar einen Daumen hoch für diese doch noch recht neue Plattform, die in relativ kurzer Zeit eine Menge an CTF-Inhalten veröffentlicht hat.