Vulnhub FristiLeaks 1.3 CTF Çözümü

Herkese merhaba ! Bugün Vulnhub sitesinde bulunan FristiLeaks 1.3 makinasına sızarak root yetkisini elde etmeye çalışacağız, umarım sizler için keyifli ve bilgilendirici bir yazı olur. Dilerseniz başlayalım…

Öncelikle her zaman ki gibi nmap -sV -p- 10.0.2.37  (ip adresi farklılık gösterebilir) komutunu çalıştırarak hedef sistemdeki bütün portları tarıyoruz. ( Nmap aracı ile daha gelişmiş taramalar yapmamız mümkün,detaylı öğrenmek daha faydalı olacaktır)

Yukarıdaki görselde nmap komutunun çıktısını incelediğimizde yalnızca 80 numaralı http portunda bir web sitesinin çalıştığını görüyoruz. İkinci adım olarak hemen gobuster aracı yardımıyla gobuster dir -u 10.0.2.37 -w /usr/share/wordlists/dirb/big.txt komutunu çalıştırıyoruz ve hedef web sitesinde gizli dizinler olup olmadığının kontrolünü sağlıyoruz

Oluşan çıktıyı incelediğimizde /robots.txt , /beer , /images dizinlerinin varlığını ve bu dizinlerin erişilebilir olduklarını görüyoruz (403 kodu olan dizinlere erişemeyiz). Robots.txt dizini genellikle Google Crawlerlarının erişilmesinin istenmediği dizinleri belirtmek için kullanılan bir dizindir. Bu dizini incelemek her zaman faydalıdır

Yukarıdaki görselde de görüldüğü gibi /cola , /sisi, /beer dizinlerine erişilmesi istenmemektedir. Biz bu dizinlere eriştik ancak içerilerinde kayda değer bir bilgiye rastlayamadık, bu aşamada vulnhub sitesindeki ctf tanımında fristi adında bir içecek içtiklerinden bahsediliyordu, bu isimde gizli bir dizin olup olmadığını araştırıyoruz

Evet yukarıdaki görselin url kısmını incelediğimizde gerçekten de bu şekilde bir dizin olduğunu ve bizlere admin portalını açtığını görüyoruz. Hemen sağ tıklayarak view page source diyerek sayfa kaynağını görüntülüyoruz ve bizim için bir ipucu bulunup bulunmadığını kontrol ediyoruz

Gördüğümüz gibi gerçekten de bizim için faydalı olabilecek bir şeyler var, burada eezeepz adlı bir kullanıcının varlığını öğreniyoruz ve kodu biraz daha incelemeye devam ettiğimizde aşağıdaki görselde de görüldüğü gibi base64 ile hashli bir yorum satırı daha bırakılmış

Şimdi ise yapmamız gereken bu hashi decode etmeye çalışmak ve içerisindeki bilgiye erişmek. Bunun için öncelikle buradaki hashi kopyalıyoruz ve hash adında yeni bir dosya oluşturarak içerisine yapıştırıyoruz. Daha sonra base64 -d hash > dosya komutunu kullanarak hashi kırıyor ve içerisindeki metni dosya adında yeni bir dosyaya yazdırıyoruz

Oluşan dosyayı açtığımızda ise yukarıdaki görselde de görüldüğü gibi içerisinde gizlenmiş olan “keKkeKKekKekkEkkEk” metnini görüntülüyoruz. Şuan da elimizde kullanıcı adı ve parola olarak deneyebileceğimiz iki adet bilgi var. Hemen login sayfasına tekrar gidiyoruz ve bu bilgileri kullanarak giriş yapmaya çalışıyoruz

Evet, gerçekten de elde ettiğimiz bu bilgilerle siteye giriş yapabildik ve karşımıza image dosyaları yükleyebileceğimiz bir sayfa çıktı. Daha önceden bilgisayarıma indirmiş olduğum reverse_shell.php dosyasını içeriğindeki kodları düzenleyerek ip adresimizi ve bağlanmak istediğimiz portu ayarlayarak bu dosyayı siteye yüklemeye çalışacağız. (Bu şekilde veya buna benzer ters bağlantı açabilecek dosyaları bulmak için internette reverse Shell cheat sheet gibi bir arama yapabilirsiniz.) Ancak ilk işlem olarak dosyamızın ismini zararli.php.jpg olarak değiştiriyoruz ki php uzantılı olan dosyamız site tarafından jpg dosyası olarak algılansın ve sorunsuz bir şekilde siteye yükleyebilelim

Yapmamız gereken ikinci işlem ise nc -nvlp 1234 komutunu çalıştırarak bağlantının kurulacağı portu dinlemek. Dosyamızı yükledikten sonra url kısmına http://10.0.2.37/fristi/uploads/zararli.php.jpg yazarak dosyamızı çalıştırıyoruz

Yukarıdaki görselde de görebileceğimiz gibi başarılı bir şekilde kendi bilgisayarımızda ters bağlantı açtık. whoami komutunu çalıştırdığımızda hedef sistemde “apache”  kullanıcısı olduğumuzu görüyoruz. Şimdi ise yetki yükseltme işlemi yaparak root olmalıyız. İlk olarak bir shell açmamız rahat çalışabilmemiz için daha sağlıklı olacaktır. Bunun için ise python -c ‘import pty;pty.spawn(“/bin/bash”)’ komutunu çalıştırıyoruz

Yukarıdaki görselde de görebileceğimiz gibi başarılı bir şekilde bash shell açtık, şimdi ise yapmamız gereken sistemde mümkün olduğunca gezinerek işimize yarayabilecek ipuçları olup olmadığını taramak olmalı. /home dizininin altında bulunan kullanıcılardan eezeepz kullanıcısının dizininin içerisine girdiğimizde karşımıza notes.txt adında bir dosya çıkıyor

cat notes.txt komutu ile bu dosyanın içeriğini görüntülediğimizde ise bizlere Jerry isimli bir kullanıcı tarafından bırakılmış; /home/admin dizinini kullanarak chmod, df, cat, echo, ps, grep ve egrep komutlarını kullanabileceğimiz ve ayrıca  /tmp dizinine giderek “runthis” ismiyle bir dosya oluşturduğumuzda, bu dosyanın sistem tarafından çalıştırılarak cronresult adında her dakika çalışacak yeni bir dosya üreteceğini belirttiği bir not görüyoruz.

Ancak biz /home/admin dizinine girmeye yetkili değiliz, işte bu yüzden, kendimizi bu dizine yetkilendirebilmek için  echo “ /home/admin/chmod 777 /home/admin” > /tmp/runthis komutunu çalıştırıyoruz

Yukarıdaki görselde de gördüğümüz gibi cd admin komutu ile önceden giremediğimiz admin dizininin içerisine şuanda girebiliyoruz. İçeriği görüntülediğimizde ise bazı ilginç dosyaların olduğunu görüyoruz. cat cryptpass.txt komutunu çalıştırdığımızda burada şifreleme algoritması çalıştıran bir python scripti olduğunu anlıyoruz

cat cryptedpass.txt komutunu çalıştırdığımızda ise içerisinde “=RFn0AKnlMHMPIzpyuTI0ITG” şeklinde bir hash görüyoruz. Elimizdeki bu python kodlarını tersine tekrar yazarak hash den parolaya gitmeyi deneyebiliriz. Bunun için aşağıdaki görselde gördüğümüz python kodunu kullanabilir ve hash algoritmasını tersine mühendislik uygulayarak düz metin olarak elde edebiliriz

python  reverse.py komutu ile önceden hazırlamış olduğumuz yukarıdaki python scriptimizi çalıştırdığımızda gerçekten de parolayı düz metin olarak elde ediyoruz

Elde ettiğimiz bu parola ile “fristigod” kullanıcısı olmayı deneyebiliriz. Bunun için su fristigod komutunu çalıştırıyoruz ve elde ettiğimiz parolayı giriyoruz.

Gerçekten de işe yaradı ve whoami komutunu çalıştırdığımızda fristigod kullanıcısına geçmiş olduğumuzu görüyoruz. Şimdi ise sudo -l komutu çalıştırabilir ve eğer mevcutsa sudo yetkisi ile çalıştırabileceğimiz dosyalar olup olmadığını kontrol edebiliriz

Yukarıdaki görselde de görüldüğü gibi fristi kullanıcısını kullanarak /var/fristigod/.secret_admin_stuff/ dizinindeki doCom adlı dosyayı root yetkisi ile çalıştırabiliyoruz. O halde bu dosyayı çalıştırarak buradan root kullanıcısına geçmeyi deneyebiliriz.

Bunun için ise sudo -u fristi /var/fristigod/.secret_admin_stuff/doCom /bin/bash komutunu çalıştırıyoruz

Evet gerçekten de işe yaradı ve whoami komutunu çalıştırdığımızda root olduğumuzu gördük , şimdi /root dizinine giderek cat fristileaks_secret.txt komutu ile fristileaks_secret.txt dosyasının içeriğini görüntülüyoruz ve böylelikle bayrağı elde ederek ctfi başarıyla tamamlamış oluyoruz. 😊

About The Author

Reply