Zum Inhalt springen
Startseite » HackMyVM Venus Walkthrough 3/5

HackMyVM Venus Walkthrough 3/5

Im dritten Blog-Post zur Plattform HackMyVM.eu dreht sich alles um die Level 21 – 30 des Venus-Labs.

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/

HackMyVM Venus
HackMyVM.eu Venus Lab

Level 21

Mission: User eloise has saved her password in a particular way.

Hier liegt das Passwort zum nächsen Level in der Datei eloise. Wer schon ein paar CTFs gemacht hat und sich den Inhalt der Datei ansieht, sieht man schnell, dass die Daten Base64-Codiert sind. Also schauen wir uns mal nach, was das für Daten sind:

cat eloise | base64 -d

Sieht sehr nach einer PDF-Datei aus. Da wir uns den Inhalt der Datei auf dem entfernten System schlecht anzeigen lassen können, kopieren wir uns den Base64-codierten inhalt der Datei ‚eloise‘ einfach in die Zwischenablage, erstellen lokal eine neue Datei ‚eloise‘ und fügen dort die kopierte Daten ein.

Anschließend wiederholen wir den Vorgang, den wir schon auf dem entfernten System durchgeführt haben, leiten die Ausgabe aber in die Datei ‚eloise.pdf‘ um:

cat eloise | base64 -d > eloise.pdf

Schon haben wir das Passwort für das nächste Level in der PDF-Datei

Level 22

Mission: User lucia has been creative in saving her password.

Lucia hat ihr Passwort auf kreative Weise in der Datei hi gespeichert. Schauen wir uns mal an, was sich in der Datei befindet:

cat hi
00000000: 7576 4d77 4644 5172 5157 504d 6547 500a

Das sieht sehr nach einem Hex-Dump aus. Zum Glück gibt es ein Linux Kommandozeilen-Tool, mit dem wir den Hexdump zurück wandeln können:

cat hi | xxd -r

Schon steht das Passwort für das nächste Level auf eurem Bildschirm.

Level 23

Mission: The user isabel has left her password in a file in the /etc/xdg folder but she does not remember the name, however she has dict.txt that can help her to remember.

Um an das Passwort von Isabel und somit an das Passwort für das nächste Level zu kommen, müssen wir eine Datei im Verzeichnis ‚/etc/xdg‘ finden, von der wir jedoch den Namen nicht wissen. Wir wissen aber, dass sich der Name der Datei in der Datei ‚dict.txt‘ befindet. Hier kann uns wieder Bash-Scripting helfen:

while IFS= read -r line; do cat /etc/xdg/$line; done < dict.txt 2>/dev/null

Wir lesen die Datei ‚dict.txt‘ Zeile für Zeile und probieren, die entsprechende Datei mit cat auszugeben. Fehlermeldungen leiten wir nach ‚/dev/null‘ um. Somit erhalten wir das Passwort für das nächste Level.

Level 24

Mission: The password of the user freya is the only string that is not repeated in different.txt

Um das Passwort zu erhalten, müssen wir uns die Datei ‚different.txt‘ anschauen und die einzige Zeile finden, die sich nicht wiederholt. Zum Glück gibt es genau für diesen Zweck ein Kommandozeilen-Tool namens uniq

uniq -u different.txt

Mit der Option -u geben wir an, dass wir nur Zeilen ausgeben möchten, die sich nicht wiederholen.

Level 25

Mission: User alexa puts her password in a .txt file in /free every minute and then deletes it.

Es wird also jede Minute eine Textdatei im Ordner ‚/free‘ erzeugt, die das Passwort enthält und kurz danach wieder gelöscht.

Mit einem kleinen Bash-Script ist dieses Level schnell gelöst. Als erstes legen wir ein Verzeichnis im ‚/tmp‘-Ordner an, da wir dort schreibrechte haben:

mkdir /tmp/free

Und als nächstes ein kleiner Einzeiler, der für eine Minute in das Verzeichnis ‚/free‘ schaut, und alle Dateien, die sich im Verzeichnis befinden nach ‚/tmp/free‘ kopiert. Danach haben wir alle Zeit der Welt, uns anzusehen, was unser Script gefunden hat:

end=$((SECONDS+60)); while [ $SECONDS -lt $end ]; do cp -RT /free /tmp/free; done

ls /tmp/free
beer.txt

Somit steht das Passwort für das nächste Level in der Datei ‚/tmp/free/beer.txt‘

Level 26

Mission: The password of the user ariel is online! (HTTP)

Diese Level ist wieder sehr einfach. Wir müssen nur mit curl ein Request an http://localhost schicken:

curl http://localhost

Level 27

Mission: Seems that ariel dont save the password for lola, but there is a temporal file.

Weil das letzte Level so einfach war, hier wieder etwas komplizierteres. Erstmal schauen wir, welche Dateien sich im Verzeichnis befinden:

ls -la

drwxr-x--- 2 root  ariel  4096 Apr  7 05:56 .
drwxr-xr-x 1 root  root   4096 Apr  7 05:55 ..
-rw-r--r-- 1 ariel ariel   220 Aug  4  2021 .bash_logout
-rw-r--r-- 1 ariel ariel  3526 Aug  4  2021 .bashrc
-rw-r----- 1 root  ariel 12288 Apr  7 05:56 .goas.swp
-rw-r--r-- 1 ariel ariel   807 Aug  4  2021 .profile
-rw-r----- 1 root  ariel    31 Apr  7 05:55 flagz.txt
-rw-r----- 1 root  ariel   254 Apr  7 05:55 mission.txt

Im Missionstext wird eine temporäre Datei erwähnt. Dabei handelt es sich wohl um die Datei ‚.goas.swp‘.
‚.swp‘-Dateien werden vom Texteditor VIM als Sicherung erzeugt. Um die Datei wieder herzustellen, erstellen wir ein temporäres Verzeichnis ‚tmp/vim‘ und starten wir VIM:

mkdir /tmp/vim
vim goas

Vim fragt uns, wie wir die Datei öffnen möchten. Wir entscheiden uns für die Option (R)ecover. Als nächstes werden wir gefragt, welche Datei wieder hergestellt werden soll. Wir entscheiden und für die letzte Datei in der liste (7).
Unsere Datei mit Passwörtern ist wieder hergestellt. Wir speichern die Datei jetzt mit dem Befehl :w /tmp/vim/goas in unserem zuvor ertsellten temporären Verzeichnis und beenden VIM mit dem Befehl :q!

Nun kopieren wir uns den Inhalt der neu erstellten Datei in die Zwischenablage und erstellen eine neue Datei ‚lola.txt‘ lokal bei uns auf dem Rechner, in die wir den Inhalt der Zwischenablage einfügen.

Jetzt können wir bequem mit hydra durchprobieren, welches Passwort für den User ‚lola‘ gültig ist:

hydra -l lola -P lola.txt ssh://venus.hackmyvm.eu:5000

Level 28

Mission: The user celeste has left a list of names of possible .html pages where to find her password.

Hier müssen wir wieder Requests mit curl an http://localhost schicken, aber diesmal müssen wir den Request an eine bestimmte HTML-Seite senden. Da es zu lange dauern würde, jede Zeile der Datei ‚pages.txt‘ von Hand durchzugehen, schreiben wir uns wieder ein kleines Bash-Script:

while IFS= read -r line; do curl "http://localhost/$line.html" -sf; done < pages.txt

Nach kurzer Zeit haben wir das Passwort für das nächste Level.

Level 29

Mission: The user celeste has access to mysql but for what?

Celeste hat also Zugriff auf eine MySQL-Datenbank. Dann schauen wir uns die Datenbank doch einmal an. Als Passwort nehmen wir einfach das letzte Passwort:

mysql -u celeste -p
Enter password:
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| venus              |
+--------------------+
MariaDB [(none)]> use venus;
MariaDB [(none)]> show tables;
+-----------------+
| Tables_in_venus |
+-----------------+
| people          |
+-----------------+
MariaDB [(none)]> select * from people;

Mit dem letzten Befehl bekommen wir den Inhalt der Tabelle ‚people‘ angezeigt. Schaut euch die Tabelle genau an, denn dort ist nicht nur das Passwort für das nächste Level sondern auch eine der hidden Flags versteckt.

Um zu wissen, nach welchem Benutzer-Passwort ihr suchen müsst, lohnt sich ein Blick in die Datei ‚/etc/passwd‘. Den Benutzer des nächsten Levels findet Ihr unter dem Benutzer des aktuellen Levels. Mit dieser Info ist es einfach, das nächste Passwort zu finden.

Level 30

MIssion: The user kira is hidding something in http://localhost/method.php

Das Passwort für den Benutzer kira und somit für das nächste Level, erhaltet Ihr, wenn ihr ein Request mit einer bestimmten HTTP-Methode an http://localhost/method.php stellt.

Infos dazu, welche Methoden es gibt, könnt ihr z.B. unter https://developer.mozilla.org/de/docs/Web/HTTP/Methods finden. Hier noch ein Spoiler: probiert ruhig alle aus, vielleicht findet Ihr ja eine hidden Flag 😉

Ersetzt einfach ‚???‘ durch die Methode, die ihr benutzen wollt. Achtung, HEAD funktioniert damit nicht. Dafür könnt ihr einfach curl -I http://localhost/method.php benutzen.

curl -X ??? http://localhost/method.php

Das waren die Level 21 – 30 des Venus-Labs auf HackMyVM.eu
Ich hoffe, ich konnte euch mit dem einen oder anderen Level weiter helfen.

Schlagwörter:

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.