- Nmap ile port tarama,
- Dirb komutu ile gizli dosyaları bulma,
- Hash türlerini öğrenme ve deşifre etmek,
- Crunch tool'u ile wordlist oluşturma,
- Hydra brute force atak ile kullanıcı şifresi bulma,
- Shell alma ve kısıtlı shell ekranından kurtulma,
- Verilen flag'i bulma,
gibi konuları ve kavramları öğreneceğiz. Makine çözümlemelerinde genel olarak bize zafiyetli bir makine verilmektedir. Bu zafiyetli makineleri çözerek kendimizi sızma testlerinde geliştirebilir, sistemler hakkında daha fazla bilgi sahibi olabiliriz. Matrix makinesi orta düzey zorluğu olan bir makinedir. Burada bizden istenen kısıtlı bir kullanıcının şifresini bulup sistemde bulunan flag(bayrak) elde etmemizdir. Matrix zafiyetli cihazını https://www.vulnhub.com/entry/matrix-1,259/# sitesinden indirebilirsiniz.
İndirdiğiniz 'ova' uzantılı dosyayı, virtualbox ya da vm gibi sanal makinelerinize içe aktar diyerek direkt kurabilirsiniz. Matrix cihazına sızma işlemini Kali Linux makinesinden yapacağımız için iki makinenin aynı ağda olmasına dikkat etmeliyiz. Ben iki makineyi de bridge moduna ayarladım. Ayarlarınız tamam ise sızma işlemine başlayalım.
Birinci Aşama
Matrix makinesinin kurulum işlemi tamamlandıktan sonra "netdiscover" komutu ile makinenin ip bilgilerini öğrenelim.
Tarama sonucunda ip adresinin 192.168.1.106 olduğunu buldum. Şimdi de bulduğum ip ile hangi portların açık olup olmadığını, çalışan servisleri nmap komutu ile kontrol edelim.
"nmap -sS -sV -Pn 192.168.1.106" komutu ile tarama işlemini gerçekleştirdim. Ben genel olarak tarama yaparken bu komutları kullanıyorum. Bu komut, -sS ile syn taraması, -sV ile servis ve versiyon taraması -Pn ile port taraması gerçekleştiriyor. Siz de kendinize bir standart komut oluşturarak taramalar gerçekleştirebilirsiniz. Tarama sonucunda ssh, http ve 31337 portunun açık olduğunu görmekteyiz. Makinenin ip'sini tarayıcıdan girerek 80 portundan makineye ulaşmayı deneyelim.
Ip adresini tarayıcıya yazdığımda beni "Welcome in Matrix" sayfası "Follow the White Rabbit" yani "Beyaz tavşanı takip et" notu ile karşıladı. Burada yapılacak ilk şey dirb komutu ile bu sayfanın gizli dosyalarına ulaşmak olmalıdır.
"dirb http://192.168.1.106" komutu ile gizli dosya taramasını başlattım. Burada hemen sonuç olarak bir "assets" sayfası ekrana düştü. Hemen bu sayfayı inceleyelim.
Bu sayfaları incelediğimde img/ sayfasında dikkat çekici bir şeyler olabileceğini gördüm. img/ klasörüne bakalım.
Bir gitkeep dosyası ile png uzantılı bir resim bulunmaktadır. Png dosyasını açalım.
Matrix makinesinin http portunu açtığımızda bize "follow the rabbit" ipucunu vermişti. Tavşana ulaştık fakat elimizde hala bir şey yok. Fakat burada "port 31337" yazısı dikkatimi çekti. O porta ulaşmayı deneyelim.
İkinci Aşama
Porta 192.168.1.106:31337 yazarak ulaştım. Yine bir sayaçlı sayfa beni karşıladı. Bu tür makinelerde ya da ctflerde aklınıza gelen her şeyi denemelisiniz. Ctf yarışmalarında web kategorisi sorularında genellikle sayfa kaynağına flagler koyulabiliyor. Sayfa kaynağını görüntülemeyi deneyelim.
Sayfa kaynağını incelediğimizde text kısmında bir base64 koduna ulaştık. Bu kodu alıp decode edelim.
http://base64encode.org adresine kodu yapıştırıp decode işlemini gerçekleştirdiğimde, bir sözün sonunda "Cypher.matrix" adresini göstermektedir. Tarayıcıya 192.168.1.106:31337/Cypher.matrix adresini girelim.
Kaynağa ulaşmaya çalıştığımda uzantısı belli olmayan bir dosyayı indirmemi istemektedir. Dosyayı indirip, terminal ekranından dosyaya ulaşalım.
"cd Downloads > ls > cat Cypher.matrix" komutlarını kullanarak dosyanın içeriğini görüntülediğim zaman karşımıza anlamsız semboller çıkmaktadır. Bunun hashli bir mesaj olduğunu düşünebiliriz. Eğer bir hash in hangi tür olduğunu bilmiyorsak; tunnels.up ya da dcode.fr gibi sayfaları kullanarak hash türünü öğrenebiliriz.
dcode.fr adresinde hash'i girdiğimde bunun bir "brainfuck" şifrelemesi olduğunu belirtti. Buradan brainfuck decoder a ulaşarak hash'i çözümlediğimiz zaman yine bir notla karşılaşıyoruz. Bu notta ise; k1ll0rXX şifresini guest kullanıcı adı ile kullanarak giriş yapabileceğimizi fakat şifrenin son 2 karakterini yazmayı unuttuğunu söylemektedir. Şifrenin son 2 karakterini bulmaya çalışalım.
Öncelikle hydra brute force için sıklıkla kullanılan bir araçtır. Brute force için bir wordlist oluşturmamız gerekmektedir. Wordlist'i hazır olarak indirebileceğimiz gibi crunch aracı ile wordlist oluşturabiliriz.
Crunch ile çok büyük wordlistler oluşturabilir ya da eksik karakter kadar wordlist oluşturabiliriz. "k1ll0r%@" 8 karakterli şifre olduğu için en küçük 8 en büyükte 8 karakterli wordlist oluşturup, oluşturulan wordlisti ise dict.txt'ye basmasını istediğim için -o dict.txt komutunu yazıyoruz.
"hydra -l guest -P dict.txt 192.168.1.106 ssh" komutunu kullanarak brute force atağı başlattık. Burada kullanıcı adını bildiğimiz için -l harfini küçük yazıp şifreyi bulacağımız için -P'yi büyük yazıyoruz. Belli bir süre şifre denemeleri gerçekleştikten sonra şifrenin "k1ll0r7n" olduğunu buldu. Şimdi ssh ile bağlanmayı deneyelim.
Yetki Yükseltme İşlemleri
Ssh ile bağlantığıyı görseldeki gibi gerçekleştiriyoruz. Ssh portunun açık olduğunu nmap ile öğrenmiştik. Şifreyi girdikten sonra guest kullanıcısına ulaştık.
"ls" komutunu denediğimde bu komutu kullanamadığımı fark ettim. Kısıtlı bir shell ekranındayız. Buradan kurtulmak için çalıştırabileceğimiz komutları bulmamız gerekiyor. "help" komutunu kullanabiliriz burada. Fakat burada da çoğu komut ls komutunda olduğu gibi kullanamamaktayız. Çalıştırabileceğimiz komutları bulabilmemiz için shell'e $PATH yazıp ortam değişkenini kontrol edelim.
/home/guest/prog içinde çalıştıralabilir komutlar olup olmadığını anlamak için echo /home/guest/prog/* komutunu yazıyoruz. Sadece erişebilir olarak "vi" programını görmekteyiz. Kısıtlı kabuk ortamından kurtulabilmemiz için vi dizini içerisine "/bin/bash" yazıp oradan kaçmayı deneyelim.
Kısıtlanan kabuk ortamından bu şekilde kurtulduktan sonra /bin/bash'i shell ortam değişkenine, /usr/bin değişkenini de PATH ortam değişkenine aktarıp Linux komutlarını doğru bir şekilde kullanabiliriz.
Vi dizini içerisine /bin/bash i yazdıktan sonra ls komutunun da düzgün çalıştığını görmektesiniz. Tanımlama işlemlerini de yaptıktan sonra kullanıcılara root olacağımız kullanıcılara sudo -l ile görüntüleyelim.
Burada /bin dizinini path ortamına aktarmadığımız için sudo su komutunu kullandığımızda hata alıyoruz. Export işlemini /bin içinde gerçekleştirelim ve root olalım.
"Sudo su" komutunu kullandıktan sonra daha önceden elde ettiğimiz k1ll0r7n şifresi ile giriş yapıyoruz. Giriş yaptıktan sonra artık root ismine ve haklarına erişimi sağlıyoruz. Ama hala flag'e ulaşamadık.
Öncelikle "cd root" diyip root dosyasına ulaşmaya çalıştığımda böyle dosya olmadığı uyarısını aldım. Guest dosyasından köke cd ile dönüp dosyaları listelediğimde ise "flag.txt" dosyasının orada olduğunu görüyoruz. Flag'i cat komutu ile görüntülediğimiz zaman mutlu sona ulaşmış oluyoruz :)
Hiç yorum yok:
Yorum Gönder