Write-up CTF

Vulnhub-Five86 Makine Çözümü

Sızma testi dünyasında kendimizi geliştirmek istiyorsak; Vulnhub sitesinde bulunan zafiyetli makinelerden faydalanabiliriz. Bu platform farklı senaryoların bulunduğu ve sonucunda bir bayrağın elde edildiği makinelerin olduğu bir yerdir.


Bu sayfadaki makineler sayesinde sızma testi metodolojisini uygulama ve çeşitli araçları kullanma konusunda deneyim kazanmış olacağız.

Ben Vulnhub’ta bulunan Five86-1 makinesini çözmeye çalışacağım ve bunu adım adım anlatacağım.

Öncelikle Vulnhub sayfasından Five86-1 makinesinin OVA formatında bilgisayarıma indirdim ve doğrudan VirtualBox ile çalıştırdım. Saldırgan olarak kullanacağım Kali ile Five86 makinelerinin ikisini de NAT mod’a alarak birbirleri ile network bazlı konuşabilir hale getiriyorum.

Şimdi sızma testi metodolojisinin ilk adımı olan bilgi toplama adımından başlayabilirim.

İlk önce “netdiscover” komutuyla makinenin ip’sini bulacağım.

Netdiscover, ağımıza bağlı olan cihazlar hakkında bilgi veren bir araçtır.  

vulnhub-makinesi-cozumu

-i parametresiyle network ara yüzümüzü seçiyoruz.

-r parametresiyle tarama yapacağımız aralığı belirliyoruz.

vulnhub-makinesi-cozumu


Vulnhub ile indirilen makinelerde genelde ip adresini PCS ile belirtilen kısımda veriliyor. Benim karşıma da iki tane çıktı; bunları nmapte hızlı bir şekilde taratıyorum. 10.0.2.3’ten herhangi bir dönüt alamıyorum ve bunun virtual box bağlantı portu olduğunu anlıyorum. Sanal makinemi virtual box üzerinden çalıştırdığım için böyle bir ihtimali olası bulup diğer seçeneği deniyorum. 10.0.2.7’den dönüt alıyorum ve açık portlar oluğunu görüyorum. O zaman makinemin ip adresinin 10.0.2.7 olduğunu anlıyorum ve diğer işlemlere bu ip adresini kullanarak devam ediyorum.

vulnhub-makinesi-cozumu-2


Artık hedef ip’yi bildiğime göre, bir sonraki aşamaya geçebilirim, Bir sonraki adımımda, ağ bağlantı noktalarını listelemek için nmap’i kullanacağım. Detaylı bir arama olması için de nmap parametrelerini kullanacağım.

vulnhub-makinesi-cozumu-2

-v  parametresi yapılan işlemleri detaylı gösterir.

-sV parametresi açık portta olan servisin ne olduğunu bulmaya çalışır.

-p- parametresi ip üzerinde bulunması muhtemel 65535 portun hepsini tarar.

vulnhub-makinesi-cozumu-3

 

Tarama sonucunda bu ip adresinde 22, 80 ve 1000. portların açık olduklarını görüyorum. Bunlarla ilgili daha fazla bilgi edinmek için yine nmap kullanarak daha detaylı bir tarama gerçekleştiriyorum.

 

vulnhub-makinesi-cozumu

-sT parametresi sadece TCP portlarını tarar.    

-A parametresi çalıştırdığı scripler sayesinde birçok kritik bilgiyi karşımıza çıkarabilir. Versiyon bilgisi, açık portlar, işletim sistemi vb. hakkında bilgilere ulaşırız.

 

vulnhub-makinesi-cozumu-5

 

Yukarıdaki sonuçta ilk dikkatimi çeken 80 numaralı bağlantı noktasının HTTP için açık olduğu ve robots.txt adında bir dosya bulundurması oldu ayrıca robots.txt’nin görüntüde de görüldüğü gibi    /ona için izin verme girişini görüntülediğini gördüm. Bu nedenle, bir web tarayıcısına gidip aşağıdaki URL’ye göz atıyorum ve açık ağ yöneticisi uygulamasının web sunucusunda çalıştığını ve uygulamanın yüklü sürümünü ifşa ettiğini görüyorum.

vulnhub-makinesi-cozumuvulnhub-makinesi-cozumu

 

/ ona dizininin openNetAdmin hizmeti çalışıyor gibi göründüğünü görüyorum, yaklaşık sayfasına gidiyorum ve openNetAdmin sürümünü görüyorum.

vulnhub-makinesi-cozumu

 

Bu versiyon bilgisini aklımın bir kenarına yazıyorum.

Şimdi dizin taraması yapacağım bunun içinde gobusterı kullanacağım. Gobusterın medium.txt in içinde olduğunu düşünüyorum bu yüzden sözlük saldırısı metoduyla arama yapacağım.

Gobuster bir dizin keşfi yapan brute-force (kaba-kuvvet) saldırı programıdır. Gobuster dir ile kullanılırsa web sitelerinde dizinleri ve dosyaları tespit etmeye yarar.

vulnhub-makinesi-cozumu

-u parametresinden sonra hedef url yazılır.

-w parametresi kelime listesinin yolunu gösterir.

vulnhub-makinesi-cozumu

 

Görüldüğü gibi 401 bildirisi aldım buradan anlamamız gereken şey orada bir doğrulama sisteminin çalışıyor olması gerekliliğidir. Yani bulunan robot.txt ve şüpheli bir 401dizin /reports, erişim kimlik doğrulamasının gerekli olduğudur.

Bundan dolayı 10.0.2.7/reports sayfasına gittim ve kontrol ettim.

vulnhub-makinesi-cozumu


Hedef makinede openNetAdmin’in  kimlik doğrulaması yapılmamış uzaktan komut yürütme güvenlik açığı olduğunu araştırmak ve bulmak için genellikle exploit-db.com’a gidiyorum.

vulnhub-makinesi-cozumu

 

Yukarıda bulduğum versiyon bilgisi burada işime yarıyor. Exploit-db’ye gidiyorum ve openNetAdmin v18.1.1’i araştırıyorum ve şimdi bir komut enjeksiyonu istismarı buldum, yerel sistemimizden exploit’i indiriyorum.

vulnhub-makinesi-cozumu

 

vulnhub-makinesi-cozumu

 

Sahip olduğum OpenNetAdmin sürümü için bash’de yazılmış bir istismar buldum.

vulnhub-makinesi-cozumu

 

Exploiti script haline çeviriyorum.

vulnhub-makinesi-cozumu

 

Şimdi diğer tarafta bulduğum hashi kaydediyorum. Hashin çözümünü yapıp görmemiz için başka bir dosyaya aktarıp karşılaştıracağız. Ayrıca chmod komutu ile çalışma izni veriyorum.

Chmod,  dosya ve dizinlerin erişim haklarını koyan ve bu hakları değiştiren bir komuttur. İzinler üç harfle belirtilir: rwx. Bu harflerin anlamları şöyledir:

r   =>   read       [okuma ]

w  => write       [yazma]

x   =>  execute       [çalıştırma]

Bu dizindeki dosyaları ayrıntılarıyla listelemek için ise sonra ls –l  komutunu kullanıyorum.

vulnhub-makinesi-cozumuvulnhub-makinesi-cozumu


 

Bir dizin ya da dosyadaki chmod izinlerini görmek için “ls -al” komutunu kullanırız. Gizli dosyaları ayrıntılı bir şekilde listelemek için de kullanılır. 

Bazı chmod örneklerine bakalım öncelikle;

vulnhub-makinesi-cozumu

 

vulnhub-makinesi-cozumu

 

Bundan sonra, daha fazla ne bulabilirim diye tekrar dizin taraması yapıyorum.

Öncelikle “pwd” komutu ile hangi dizinde olduğumu öğreniyorum ve kabuğun www-verisi olarak ortaya çıkardığımı görüyorum.

Kabuğu aldıktan sonra dizini değiştiremeyeceğimi anlıyorum. Ne olursa olsun, nereye gitmeye çalışırsak çalışalım, aynı dizinde kalırız, yani /opt/ona/www. Sonra diğer web ile ilgili dosyaları kontrol etmeye devam ettim ve bunu yaparken gerçekten bir şey elde ettim.

vulnhub-makinesi-cozumu

 

Ana makineyi başarıyla kullandım ve kabuğu www-data olarak ortaya çıkardım. Sonrasında dosyaları incelemeye devam ediyorum.

Tüm gizli dosya ve dizini kontrol etmek için ls –al komutu ile / var / www / html / reports dizinini taradım.

vulnhub-makinesi-cozumu

/ var / www / html / reports içinde “.htaccess” dosyasını buldum. Sonra “cat” komutunu kullanarak bu dosyanın da içine baktım.

“cat” komutu dosyanın içeriğine bakmamıza yardımcı oluyor.

vulnhub-makinesi-cozumu

.Htaccess’i okuyarak. htpasswd dosyası için yol buldum ve sonrasında htpasswd dosyasını da “cat” komutuyla açtım.

vulnhub-makinesi-cozumu

Bu dosyada bir şeyler buldum galiba douglas, potansiyel bir kullanıcı olabilir ve sadece bu değil, aynı zamanda bir ipucu da var. İpucuya göre, şifrenin 10 karakterlik bir “aefhrt” dizesi olduğunu buldum, bu nedenle 10 karakter uzunluğunda bir şifre sözlüğü hazırlamam gerekiyor.

vulnhub-makinesi-cozumu

 

Burada, sözlüğü oluşturmak için kali’nin kendi şifre sözlüğü oluşturma aracı crunch kullanıyorum ve yazarın söylediği gibi parola modelini takip etmek için aşağıdaki komutu uyguluyorum.  Ayrıca yukarıda açıklanan hash değerini “hash” adlı bir metin dosyasına kaydettim.

Crunch kullanımı da şu şekildedir;

crunch   <min. karakter sayısı>  <max. karakter sayısı> -o <Dizin adı>

vulnhub-makinesi-cozumu

Aşağıda görüldüğü gibi 10 karakterlik ve  “aefhrt” harflerinden oluşan  634MB büyüklüğünde bir şifre sözlüğü oluştu.

vulnhub-makinesi-cozumu

 

Yukarıdaki komutun yardımıyla bir sözlük oluşturdum ve hash değerini kırmak için john ripper’ı kullandım.

John the Ripper bir hash kırma aracıdır.

vulnhub-makinesi-cozumu

Hash’lerimiz kırılıyor şimdi kabuk www verilerini kullanıcı douglas olarak değiştiriyor. Douglas için şifremiz var: fatherrrrr. Şimdi douglas kullanıcısının şifresine sahip olduğuma göre, kullanıcı olarak değiştiriyorum.

vulnhub-makinesi-cozumu

 

Bu noktada kullanıcı adı ve parola ile ssh hizmeti aracılığıyla giriş yapmaya hazırım, yani kullanıcı değiştirmeye. SSH aracılığıyla hedef makinede oturum açmak için douglas hesabını kullanıyorum.

Douglass olarak oturum açtığımda, onun için sudo haklarını aradım ve sudo -l komutunun çıktısına baktığımda, kullanıcının / bin / cp ikilisini jen kullanıcı olarak çalıştırma yetkisine sahip olduğunu gördüm. Mevcut hesabın cp komutunu jen izinleriyle çalıştırabildiğine göre Jen hesabına geçelim.

 

vulnhub-makinesi-cozumu

 

Bu aşamada jen olarak oturum açmaya çalışacağım. Bunun için bir ssh-keygen anahtarı üretiriz ve genel anahtarı /home/jen/.ssh dizinin altına kopyalar, ardından jen hesabını kullanarak oturum açabiliriz. Bu yüzden ilk önce ikinci kullanıcımız için bir ssh anahtarı oluşturmamız gerekiyor.

vulnhub-makinesi-cozumu

ssh-keygen bir dizi soru sorar ve sonra özel bir anahtar ve eşleşen bir ortak anahtar yazar.

vulnhub-makinesi-cozumu

 

Bu anahtar hedef makine / tmp dizinini kopyalıyorum ve authorized _keys adını değiştiriyorum.

vulnhub-makinesi-cozumu

Bu sefer dosya çalıştırılabilir izinleri /tmp altında authorized_keys içinde.

Anahtar oluşturduktan sonra şimdi bu dosyanın iznini değiştirip ikinci kullanıcı jen /home/jen/.ssh dizinini kopyalayacağım. Ayrıca  /home/jen/.ssh/ sadece authorized_keys taşınmak için oluşturulmuş.

vulnhub-makinesi-cozumuvulnhub-makinesi-cozumu

 

Ssh bağlantısını herhangi bir şifre olmadan bağlamaya denedim ve Jen kullanıcısıyla başarıyla oturum açtım.

vulnhub-makinesi-cozumu

Ssh kullanarak jen’e giriş yaptıktan hemen sonra, içinde bir posta olduğunu görüyorum.

vulnhub-makinesi-cozumu

 

Bunu incelemeye başladığımda, / var / mails içinde jen e-postasını gösteren bir metin dosyası “jen” buluyorum. Jen kullanıcısının yeni postasını kontrol ettiğimde, açık metinde bir şifre olduğunu görüyorum. Parola, başka bir kullanıcı Moss’un parolası olarak verilmiş. Bu mesaja göre jen, Moss hesabının şifresini biliyor, bu nedenle Moss kimlik bilgilerini daha fazla hareket için kullanabilirim.

vulnhub-makinesi-cozumu

 

Jen’e gelen mailde Roy isimli kişi Moss’un şifresini erken saatlerde değiştirmek zorunda kaldığını ve bu yüzden Moss pazartesi sabahı döndüğünde şifresinin artık “Fire!Fire!” olduğunu ona söylemesini rica ediyor.

Artık elimizde kullanıcısı “Moss” ve şifresi “Fire!Fire!” olan bir hesap var

Bu nedenle, Jen’in hesabından Moss’a geçiş yapıyorum. Moss hesabına geçtikten sonra, ayrıcalıkları artırmanın normal adımlarını tekrarlayacağım ve SUID yetkilisini bulmaya çalışacağım.

vulnhub-makinesi-cozumu

 

Kullanıcının SUID dosyasını /home/moss/.games/upyourgame sudo ayrıcalıklarıyla çalıştırabildiğini görüyorum.

vulnhub-makinesi-cozumu

 

Bu yüzden /home/Moss/.game/ adresine gidiyorum ve “upyourgame” programını çalıştırıyorum, program yalnızca EVET / HAYIR biçiminde yanıtlanabilen anketleri başlatıyor.

vulnhub-makinesi-cozumu

 

Ve son olarak, kök kabuğu alıyoruz ve en son bayrağı buluyoruz. / root dizini aşağıdaki gibi.

vulnhub-makinesi-cozumu

 

Yorumlar

Bediha ŞAHİN
13.04.2021 - 06:31

Emeğinize sağlık 🌠