[TR] TryHackMe — Year of the Rabbit Write-Up
6 min readMay 19, 2020
(Nisan 2020)
Herkese merhaba, ben Anıl Çelik.
Bugün sizlerle TryHackMe platformunda bulunan ve birkaç gün önce yayınlanan Year of the Rabbit isimli makinenin çözümünü paylaşacağım. Daha fazla uzatmadan hemen konuya geçelim:
- Öncelikle nmap taramamızı gerçekleştirelim:
- Bu çıktıdan görebileceğimiz üzere, işe yarar birkaç şey elde ettik gibi görünüyor. Daha detaylı bir tarama gerçekleştirmeden önce, (tüm portları taramak için -p- parametresini kullanmak gibi) enumeration aşamasına geçelim.
- Anonymous şekilde ftp servisine bağlanabileceğimize dair bir mesaj almadık ancak ben yine de gidip ftp servisine anonymous bağlantı gerçekleştirmeye çalıştım ancak başarısız oldu. Ayrıca, makine üzerindeki ftp versiyonuna ait searchsploit üzerinde veya başka bir yerde bir zafiyet aradım fakat bu da başarısız oldu:
- SSH servisinin versiyonunda da bir zafiyet bulunmuyor. Bir sonraki aşama için HTTP servisinde enumeration işlemine başlayalım:
- 80 numaralı portu ziyaret ettiğimizde Apache Web Servisinin varsayılan sayfasıyla karşılaşıyoruz. HTTP servisinde çalışan gizli dizinler için bir gobuster taraması yapalım:
- İşe yarar bir şey bulduk gibi görünüyor. “/assets”, daha derine gidelim:
- /assets dizinine gittiğimizde, iki tane dosyayla karşılaşıyoruz. Bunlardan ilki Rick Astley’nin Never Gonna Give Up isimli şarkısı, ikincisi ise style.css dosyası. Bu dosyayı incelemeye çalışalım:
- Sonunda işe yarar bir şey bulduk, gizlenmiş dizine gidelim:
- Doğruyu söylemek gerekirse, bu javascript mesajını gördüğüm an back-end tarafında bir şeyler olduğunu düşündüm ve arka tarafta giden trafiği incelemem gerektiğini farkettim. Bu işlemi Burp Suite üzerinden gerçekleştirelim:
- Gördüğümüz gibi şüphemiz haksız çıkmadı, arka tarafta giden trafikte başka bir gizli dizin bulduk:
- Karşımıza bir resim dosyası çıktı:
- Bu resim bana Yeşilçam yıldızı Gülşen Bubikoğlu’nu hatırlattı :) (belki de ona ait bir resimdir, bilmiyorum). Bu noktada, bu ulaşmamız gereken bilginin bu resim içerisinde olduğunu düşündüm, çünkü şimdilik elimizde üzerine gidebileceğimiz başka bir veri yok, öyleyse fotoğrafı indirelim. Hatırlatma: Bir indirme işlemi yaparken indirmek istediğiniz dosyanın içeriğinin bozulmasının önüne geçebilmek için, Right Click + Save seçeneği yerine “wget” kullanmanızı öneririm. Dosyamızı wget ile indirelim:
- Öncelikle exiftool kullanarak resmi analiz edelim:
- Pek işe yarar bir bilgi elde edemedik. Sonraki adım olarak strings komutunu kullanabiliriz:
- Gördüğümüz üzere, FTP servisinin kullanıcı adını ve bu kullanıcı adına ait parolanın bulunduğu bir parola listesini elde etmeyi başardık. Burada, daha önce hakkında yazmış olduğum Hydra isimli araçla bir brute-force saldırısı yapabiliriz (ilgili yazıma buradan ulaşabilirsiniz):
- İstediğimiz bilgiye ulaşmayı başardık. FTP servisine bağlanıp içerdeki dosyalara bakalım:
- “Eli’s_Creds.txt” isimli dosyayı indirdik, içeriğine göz atalım:
- Maalesef yine işe yarar bir bilgiye ulaşamadık (en azından şimdilik). Sonraki süreçte, yaklaşık 1 saatlik bir araştırma sonra buradaki çıktı ile ne yapabileceğimizi buldum. Buradaki çıktı BrainFuck isimli bir programlama diline aitmiş. Decrypt etmeye çalışalım:
- Sonunda işe yarar bir kullanıcı adı & parola kombinasyonu elde ettik. SSH servisine bağlanmaya çalışalım:
- Bağlandık! user.txt dosyasını bulmaya çalışalım:
- Maalesef user.txt dosyası burada veya eli kullanıcısının erişim izni olan başka bir yerde değil. Biraz daha enumeration yaptıktan sonra, user.txt dosyasının gwendoline isimli kullanıcıya ait olduğunu görebiliriz:
- Burada şunu hatırlamalıyız ki SSH servisine ilk bağlandığımızda bize ipucu verebilecek bir notla karşılaşmıştık:
- Görebildiğimiz gibi root kullanıcısından gwendoline kullanıcısına bir mesaj var, ilgili dosyayı bulalım:
- Galiba gwendoline kullanıcısının parolasını bulduk. Deneyelim:
- Sonunda user.txt dosyasına ulaşmayı başardık. Şimdi yetkilerimizi yükseltmeye çalışalım. Ben yetki yükseltme aşamasında öncelikle yanlış yapılandırılmış olabilecek SUID bitleri kontrol etmeyi tercih ediyorum (ilgili yazıma buradan ulaşabilirsiniz):
(find / -user root -perm -4000 -exec ls -ldb {} \;)
- SUID bitleri üzerinden yetkilerimi yükseltmeye çalıştım ancak işe yaramadı. “sudo -l” komutunu deneyelim:
- “sudo -l” komutunu bilmeyenler için kısaca açıklamak gerekirse; “sudo -l” komutu kullanmakta olduğumuz kullanıcı için tanımlanmış sudo yetkilerini görmemize olanak sağlar. Yukarıdaki çıktıdan görebileceğimiz gibi, gwendoline kullanıcısı, home/gwendoline/user.txt dosyasını sudo yetkisiyle /usr/bin/vi (Vim Editor) komutunu kullanarak çalıştırabilir. Bununla ilgili bir komut olup olmadığını kontrol etmek için GTFOBins’e göz atalım:
- Bir komut bulmayı başardık, deneyelim:
- Maalesef bulduğumuz komut yetkimizi yükseltmeye yaramadı. Biraz araştırmadan sonra, CVE-2019–14287 kodlu zafiyetin işime yarayabileceğini buldum:
- Sayfayı incelediğimizde, aşağıdaki şekilde kodun kullanılışını görebiliriz:
- Deneyelim:
- Bu komutu girdiğimizde bir Vim editor açılacak. Sonrasında, “:” komutu ve sonrasında “!/bin/sh” komutunu girerek shell alacağız:
- Yetkimizi root seviyesine yükseltmeyi başardık, gidip root flag’i de görüntüleyelim:
Gördüğünüz gibi root.txt flagini de ele geçirmeyi başardık. Umarım yazımın size bir faydası olmuştur. Yazımı okuduğunuz için teşekkür ederim.
Bir sonraki yazımda görüşmek üzere.