Boot2Root: Fristileaks

Fristileaks açıldığında bize IP adresini veriyor.

Screen Shot 2018-01-11 at 10.14.35.png

Nmap taraması yaptığımızda sadece 80 portunun açık olduğunu görüyoruz.

Screen Shot 2018-01-11 at 10.15.45.png

Sitede bizi bir görsel karşılıyor.

Screen Shot 2018-01-11 at 10.17.12.png

Nikto ise bize robots.txt içerisinde üç adet dizin bulunduğunu gösteriyor. Bu dizinler sırasıyla; cola, sisi ve beer. Dizin isimlerinin içecek olduğunu düşünerek /fristi/ dizinine erişmeye çalıştığımızda bir giriş ekranıyla karşılaşıyoruz.

Screen Shot 2018-01-11 at 10.18.29.png

Sayfanın kaynak kodunu incelediğimizde iki adet yoruma alınmış parça görüyoruz.

Screen Shot 2018-01-11 at 10.19.23.png

Screen Shot 2018-01-11 at 10.19.29.png

base64’ü decode ettiğimizde bize aşağıdaki görseli veriyor.

Screen Shot 2018-01-11 at 10.21.39.png

Kullanıcı adı ve parola kısımlarına bulduğumuz bilgileri yazarak giriyoruz. Bizi bir dosya yükleme sayfası karşılıyor.

Screen Shot 2018-01-11 at 10.22.43.png

Her hangi bir “.php” uzantılı dosya yüklemeye çalıştığımızda hata mesajı alıyoruz. Dosya uzantıları kontrol ediliyor.

Screen Shot 2018-01-11 at 10.23.30.png

“.php” uzantılı backdoor dosyamızın sonuna “.png” uzantısı ekleyerek yüklüyoruz. /uploads içerisinden eriştiğimiz backdoor dosyası bize erişim sağlıyor.

Screen Shot 2018-01-11 at 10.24.46.png

İçeride biraz gezindiğimizde “eezepz” kullanıcısının dosyaları arasında bir not buluyoruz.

Screen Shot 2018-01-11 at 10.26.25.png

/tmp/ içerisine koyduğumuz başka bir backdoor dosyasını “runthis” ile çalıştırabilirsek admin yetkili bir shell elde edebiliriz. /usr/bin/ içerisinde perl bulunmakta. Ben bu iş için perl backdoor kullandım.

Screen Shot 2018-01-11 at 10.27.38.png

Screen Shot 2018-01-11 at 10.28.02.png

Admin kullanıcısın dosyaları arasında bir kod parçacığı ve iki adet text dosyası buluyoruz.

Screen Shot 2018-01-12 at 00.12.29.png

Kod parçasının etkisini ters çevirmek için aşağıdaki kod parçacığını kullanıyoruz;

import base64,codecs,sys
def decodeString(str): 
  decode = codecs.decode(str[::-1], 'rot13') 
  return base64.b64decode(decode)
result1 = decodeString("=RFn0AKnlMHMPIzpyuTI0ITG")
result2 = decodeString("mVGZ3O3omkJLmy2pcuTq")
print result1,result2

Kodu çalıştırdığımızda bizi iki adet potansiyel parola karşılıyor.

Screen Shot 2018-01-12 at 00.14.48.png

Bulduğumuz potensiyel parolaları denediğimizde fristigod kullanıcısına erişim sağlayabiliyoruz. Burada bizi gizli bir dizin bekliyor.

Screen Shot 2018-01-12 at 00.16.23.png

Screen Shot 2018-01-12 at 00.16.37.png

Gizli dizin içerisinde bulunan doCom uygulamasını çalıştırdığımızda aşağıdaki gibi bir hata alıyoruz.

Screen Shot 2018-01-12 at 00.16.50.png

“bash_history” incelendiğinde doCom nasıl kullanılıyor bir fikrimiz oluyor.

Screen Shot 2018-01-12 at 00.16.59.png

Kullanım örneklerine göre “whoami” komutu çalıştırdığımızda “root” cevabı alıyoruz.

Screen Shot 2018-01-12 at 00.19.55.png

doCom ile shellcode çalıştırdığımızda root yetkili bir shell almış oluyoruz.

Screen Shot 2018-01-12 at 00.20.02.png

Screen Shot 2018-01-12 at 00.20.25.png

Root yetkisi kazandıktan sonra flag’i okuyabiliyoruz.

Screen Shot 2018-01-12 at 00.20.32.png