Link do room’u: https://tryhackme.com/r/room/cyborgt8
Mamy takie pytanka na które musimy odpowiedzieć:
- Scan the machine, how many ports are open?
- What service is running on port 22?
- What service is running on port 80?
- What is the user.txt flag?
- What is the root.txt flag?
Na porcie 22 jest defaultowo ssh, a na porcie 80 jest http, lecz pierw sprawdźmy to skanem nmapa - przy okazji uda nam się wtedy odpowiedzieć na pytanie numer 1
nmap -oN nmap.txt -Pn -T4 -sC -sV -p- 10.10.127.219
Dostałem od razu warning o treści Warning: 10.10.127.219 giving up on port because retransmission cap hit (6).
Więc niestety za dużo requestów do serwera, zmniejszyłem sobie -T4
na -T3
i usunąłem -p-
i puściłem jeszcze raz
no a w tle puściłem gobustera
gobuster dir -o gobuster.txt -u 10.10.127.219 -w /usr/share/wordlists/seclists/Discovery/Web-Content/common.txt
pokazał on mi dość ciekawe directory, takie jak /admin
i /etc
===============================================================
Starting gobuster in directory enumeration mode
===============================================================
/.htpasswd (Status: 403) [Size: 278]
/.htaccess (Status: 403) [Size: 278]
/.hta (Status: 403) [Size: 278]
/admin (Status: 301) [Size: 314] [--> http://10.10.127.219/admin/]
/etc (Status: 301) [Size: 312] [--> http://10.10.127.219/etc/]
/index.html (Status: 200) [Size: 11321]
/server-status (Status: 403) [Size: 278]
Progress: 4734 / 4735 (99.98%)
===============================================================
Finished
===============================================================
nmap się w tym czasie skończył i to wyszło z jego outputu:
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.10 (Ubuntu Linux; protocol 2.0)
80/tcp open http Apache httpd 2.4.18 ((Ubuntu))
Więc w odpowiedzi do pytania pierwszego wpisuje, że są 2 porty. Przy okazji udało się też potwierdzić co na tych portach się znajduje
Wszedłem sobie na /etc
i znalazłem tam 2 pliki:
z czego passwd
zawiera dość ciekawe dla mnie rzeczy
Zcrackowałem ten hash używając John the rippera
john --wordlist=/usr/share/wordlists/rockyou.txt passwd
no i sukces
Wszedłem sobie po tym na directory /admin
i znalazłem tam w navbarze “Admins”
Dowiedziałem się, że trzeba znaleźć backup o nazwie “music_archive”, więc klikam od razu w “Archive” i wtedy pokazał mi się przycisk Download który umożliwił mi pobranie pliku archive.tar
Wleciał więc szybki unzip tego pliku
tar -xf archive.tar
przechodząc do home/field/dev/final_archive
zauważyłem różne inne pliki, więc wyświetlam sobie od razu README
Hm, sprawdźmy to
Wygląda to na jakiś program do backupów
Wszedłem sobie w usage, a odrobinę później wygooglowałem githuba borg
a
Pobrałem sobie też go https://github.com/borgbackup/borg/releases
Wylistowałem sobie te wcześniej pobrane archiwum, używając borga
./borg list home/field/dev/final_archive
poprosił mnie o hasło, więc wpisałem wcześniej zcrackowane squidward
No to spróbujmy to wyextractować
./borg extract home/field/dev/final_archive/::music_archive
poprosił mnie jeszcze raz o hasło, więc wpisałem squidward
Pojawił mi się folder home, który zawierał dane użytkownika alex
postanowiłem to sprawdzić, lecz tym razem nic ciekawego
Próbuję dalej
no i coś mamy, spróbuje się tym zalogować do ssh
Sukces! dodatkowo wykonując ls
udało mi się namierzyć flagę usera
Robiąc sudo -l
też udało się odkryć coś, co może pomóc w eskalacji uprawnień
wyświetlę sobie co tam się znajduje w tym pliku
sprawdzę od razu też uprawnienia
No niestety tym razem nie uda się eskalować tym użytkownikiem po prostu edytując ten skrypt
Ale, warto zaznaczyć, że ten skrypt zawiera funkcję getopts
która jest wbudowaną funkcją do analizowania argumentów i opcji skryptu. Szczerze mówiąc nie słyszałem o tej funkcji wcześniej, ale przykuła ona moją uwagę.
Wykorzystałem sobie tą funkcje, używając sudo /etc/mp3backups/backup.sh -c /bin/bash
No i mam shell roota. Ale niestety nie dostawałem outputu komend, które wpisywałem
Spróbowałem w takim razie eskalacji uprawnień przez bit SUID
więc jako root:
- Wszedłem w
/tmp
- Zrobiłem
cp /bin/bash ./bash
- Dodałem bit SUID
chmod +s bash
- Wpisałem
exit
i wróciłem do shella usera
jako user zrobiłem:
cd /tmp
ls -la
Wszedłem sobie na gtfobins i wyczytałem informacje na temat eskalacji uprawnień do roota używając bitu SUID
no i wpisałem jako alex
komendę ./bash -p
mamy znowu root shella. Sprawdźmy czy tym razem widzimy output komend
No i super, pozostało nam jedynie cat /root/root.txt