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 borga

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