Bu çalışmada zafiyetli kevgir makinesinin açık portları tespit edilip sisteme sızma işlemi gerçekleştirilecektir. Keyifli okumalar…
Ayarlar üzerinden kendi makinemizle hedef makinenin (kevgir) aynı ağda olması için her ikisi de NAT olarak ayarlanmalıdır.
Tomcat
Öncelikle kendi makinemizin ip adresi nedir bunu öğrenelim.
ifconfig komutuyla ip adresimizin 192.168.216.131 olduğunu görüyoruz.
nmap(-sP) aracılığıyla ağ adresimizi girerek aktif cihazları cihazları keşfedebiliriz.
Yada ağa hangi cihazlar bağlı bunu görmek için netdiscover komutunu çalıştırabiliriz.
1 ve 2 ile biten ip adresleri genelde modem, NAT Device vb. şeylere verilen ip adreslerdir. Aynı ağ üzerinde olduğu için ya 130 ya da 254 le biten ip adresi kevgir makinesine aittir.
Tarayıcıdan her iki adrese de gidip hangisi kevgir makinesine ait tespit edebiliriz. 130 ile biten ip adresi kevgire aitmiş.
Hedef makinemizin ip adresini tespit ettiğimize göre açık portların tespitini yapalım.
Her komutu çalıştırdığımızda bizden root yetkisi istenmeyebilir. İstenildiği takdirde sudo komutuyla root yetkisi dahilinde komutları çalıştırabiliriz. Şimdi sudo nmap -sS [hedef ip adresi] diyerek açık portların bilgisini ekrana getirelim.
Burada dikkat edilmesi gereken konu open yazan portların kesin açık olmadığıdır. Bir tahmine dayalı olabilir. Bu nedenle -sV parametresiyle versiyon bilgisi edinip portun açık olduğuna kanaat getirebiliriz.
Böylelikle -sV parametresiyle sistemde ki açık portların versiyon bilgisinide elde etmiş olduk.
Burada Apache Tomcat versiyonu açık olan http portunu kullanarak işleme devam edeceğiz.
Tarayıcı üzerinde 192.168.216.130:8080 adresine gittiğimizde tomcat sunucusunun kullanıldığını göreceğiz ve ‘It works’ başlıklı bir sayfayla karşılaşıyor olacağız.
Kurduktan sonra yönetici web uygulamasına erişim sağlayabileceğimiz bir yazı mevcut. ‘manager’ dediğimizde karşımıza giriş için kullanıcı adı ve parola isteyen bir ekran gelmektedir. Birkaç deneme sonucu giriş yapabilmek pek de mümkün olmayacaktır.
Şifreyi bir brute force attack gerçekleştirerek kırmak akla ilk gelen yöntem elbette. Vakit kaybetmeden msfconsole geçiş yapalım.
‘search tomcat’ komutuyla, tomcat üzerinden hangi exploitler var bunu aratalım.
Oturum açmak için kullanılan auxiliary/scanner/http/tomcat_mgr_login exploitini ‘ use ‘ ile kullanacağımızı belirtiyoruz.
Kullanabileceğimiz ayarları ve neyi nasıl kullanacağımıza dair kafa da soru işareti bırakmaması adına show options komutuyla görüntüleyebiliriz.
Shell almak için bağlantı kurmamız gerekmektedir. RHOSTS değerine hedef ip adresimizi, RPORT değerine ise sunucuya bağlanacağımız port değerini giriyoruz. VERBOSE değerini ise false girerek Brute Force işlemi gerçekleşirken direkt olarak doğru eşleşmeyi döndürmesini istiyoruz.
Sonuç başarılı böylelikle kullanıcı adı ve parolanın tomcat olduğunu tespit etmiş olduk.
Artık tomcat sunucusuna gidip bilgileri girerek oturumu açabiliriz.
Oturum açtıktan sonra sayfa üzerinde deploy(dağıtmak) edebileceğimiz bir bölüm var. Bir reverse shell alabiliriz mesela. Yani hedef sisteme bir dosya gönderip sistemde çalıştırdıktan sonra kendi sistemimizde bir shell bağlantısı oluşturabiliriz. Şimdi war uzantılı bir payload dosyası oluşturarak browse edeceğiz.
msfvenom aracılığıyla payload listelerini görüntüleyelim ve uygun payloadı seçelim.
Shell alma işlemi gerçekleştireceğimiz için ve tomcat java tabanlı bir sunucu olduğu için seçeceğimiz payload java/jsp_shell_reverse_tcp olacaktır.
Payload dosyasını kaydediyoruz. Örneğin payload.war olarak masaüstüne kaydedilebilir.
Burada LHOST ile dinleme yapacak sistemin ip adresini yani kendi ip adresimizi giriyoruz. LPORT 4444 diyerek dinleme yapacağımız portu belirliyoruz. Boşta olan herhangi bir port değeride girilebilir. -f parametresiyle dosyayı kaydedeceğimiz dizini belirliyoruz.
payload.war dosyasını yükleyerek deploy ediyoruz.
Karşımıza gelen ekranda dosyamızın yüklendiğini görebilmekteyiz.
Bu dosyaya tıklanıldığında boş bir ekran açılacaktır ve bağlantı kurulacaktır fakat bağlantı kurmak için gerekli ayarlamaları henüz yapmadık. Msfconsole geçiş yaparak gerekli ayarlarlamaları yapalım.
Bağlantı yapmak için kullanacağımız modülü seçip ardından payloadımızı giriyoruz. Kendi ip adresimizi de verdikten sonra run ya da exploit ediyoruz.
Hedefin payload dosyasına tıklaması durumunda bağlantı kurulacaktır. Dosyaya tıklayıp bağlantıyı kurmuş olalım.
Bağlantıyı kurduk hedef üzerinde işlemler gerçekleştirebiliriz. Hemen bir shell alalım.
Burada klasik Linux komutlarıyla işlemler yapabiliriz. Dosya ve klasörleri listeleyip hangi dizinde olduğumuzu görebiliriz. whoami komutuyla kim olarak olarak bağlantı yaptığımı öğrenmiş oluruz. (tomcat7 olarak)
Sistemde root olmak istiyoruz fakat root parolasını bilmiyoruz. Birkaç parola denemesi yapmak sonuç vermeyecektir.
Sistem kullanıcıları üzerinden denemeler yapabiliriz. /etc/passwd ile aktif kullanıcıları görelim.
Admin kullanıcısına geçmek için birkaç parola denemesi yapalım.
3. denemede parolayı admin olarak girdiğimizde başarılı olabildik. Admin kullanıcısı üzerinden işlemler gerçekleştirebiliriz fakat bu işlemlerde kısıtlı olacaktır. Örneğin shadow dosyasını görüntülemek istediğimizde görüntüleyemiyoruz.
İzin verilmediğini görüyoruz.
Hedefe bir hacker gözüyle baktığımız zaman sistemde sınırsız yetkiye sahip olmak isteriz. Bu da ancak root kullanıcısına geçmekle mümkün olabilir. Dolayısıyla root olabilmenin yollarını aramamız gerekecektir.
lsb_release -a ve uname -a parametreleriyle sistemin hangi işletim sistemini ve hangi sürümünü kullandığını tespit edip bu yönde zafiyet arayalım.
Ubuntu 14.04 sürümü kullanılmaktadır. Exploit database’den yerel root olmamızı sağlayabilecek c dilinde yazılmış bir kod var. Sayfa da ‘ubuntu 14.04’ aratalım.
Belirtilen kodu indirelim.
Kodu kendi sistemize indirdik ama aslında hedef sistemde indirmemiz gerekmektedir. Hedef sistemde indirme işlemini yapabilmemiz için de root yetkisine sahip olmamız gerekmektedir ki zaten amacımızda root olabilmek.
Root yetkisine sahip olmadığımız için kendi bilgisayarımızdan bunu hedef sisteme indirebiliriz. Bunun için kendi terminalimizde php -S 192.168.216.131:5000 diyerek bir sunucu oluşturalım.
Ardından bu sunucu üzerinden tarayıcıda açalım ve c dosyasını indirip indiremeyeceğimizi kontrol edelim.
Dosyanın indirilebileceğini gördük. İşimize yarayacak bu url yi kopyalayalım.
Şimdi hedef sistemin terminal ekranını açıyoruz ve geçici dosyaları/dizinleri barındıran tmp dizinine geçiş yapıyoruz. İndirme işlemini tmp dizininde gerçekleştireceğiz.
Ardından wget aracıyla kopyaladığımız url yi yapıştırarak dosyayı indiriyoruz. ls komutuyla da dosyanın mevcut olduğunu da görmüş olduk.
gcc komutuyla bu c dosyasını derleyelim ve öyle çalıştıralım.
Çalıştırılabilir bir a.out adlı dosya mevcut. Bu dosya 39166.c dosyasının derlenmiş hali olarak karşımıza çıkmaktadır. Bu dosyayı çalıştırıyoruz ve root oluyoruz.
Daha önce görüntüleyemediğimiz shadow dosyasını birde şimdi açalım.
Root olduğumuz için dosyayı görüntüleyebildik. Artık sınırsız yetkiye sahibiz ve sistemde dilediğimiz her işlemi gerçekleştirebiliriz.
FTP
Nmap çıktısında vsftpd 3.0.2 versiyonlu ftp portunun açık olduğunu görüyoruz. Bu port bir dosya aktarım protokolüdür. İşleme medusa aracıyla bir brute force saldırısı yaparak devam edelim. Öğrenebilirsek kullanıcı adıyla ve parolayla bağlantı sağlayabiliriz.
Başarılı sonuç aldık. Kullanıcı adının ve şifresinin admin olduğunu tespit ettik.
Şimdi bağlantı sağlayalım.
İlk başta bağlantı reddedildi bu nedenle izni verip bağlanacağımız portu belirterek bağlantıyı gerçekleştiriyoruz.
Bağlandıktan sonra birkaç basit işlem gerçekleştirebiliriz. Örneğin var olan dosyaları görüntüleyebiliriz.
Pwd komutuyla hangi dizinde olduğumuzu görüntüleyebiliriz. get komutuyla belirtilen (yetki.c) bir dosyayı çekebiliriz.
SSH
Sistemde 1322 numaralı SSH portu açık, buraya da bir bağlantı kurulabilir. Bağlantı kurmak için Hydra aracıyla bir brute force saldırısı gerçekleştireceğiz.
Verilen liste sağlam bir wordlist ise başarılı sonuç dönecektir. Biraz ağır çalıştığından msfconsole üzerinden brute force saldırısını gerçekleştirmek istedim.
Kullanıcı ve parola listesini tanımlayıp gerekli ayarlamaları da yaptıktan sonra atağı başlattık. İki sonuç döndü. İki ayrı kullanıcı adı ve parola var.
Bunlardan herhangi biriyle bağlantı kurabiliriz.
Burada 1322 portunu belirtmemiz gerekmektedir. Belirtilmediğinde 22 portu algılanıp bağlantı kurulamayabilir.
Evet admin kullanıcısıyla bağlantıyı kurduk. Admin kullanıcısı üzerinden işlemler gerçekleştirebiliriz fakat bu işlemlerde kısıtlı olacaktır. root dışında hangi kullanıcı olursa olsun yapılacak işlemler kısıtlıdır.
Tmp dizinine geçip buraya kendi sistemimizden yerel yetki yükseltebilmek adına indirdiğim c kodunu yükleyeceğim. Ardından bu c kodunu derleyip çıktısını çalıştıracağız.
Böylelikle SSH portundan da sisteme bağlanıp root olduk.
SMB
Hedef sistemde açık olan bir diğer port ise smb portudur. 139 ve 445 iki port da açık olduğundan kullanıcı adı ve şifreleri öğrenmek için ikisi içinde ayrı ayrı bir brute force saldırısı gerçekleştirelim.
139 portu üzerinden atağı başlattığımızda başarılı olamadık.
Birde 445 portu üzerinden deneyelim.
445 portu üzerinden atağı başlattığımızda admin:admin olarak kullanıcı adı ve şifre bilgisini elde etmiş oluyoruz.
Elde edilen kullanıcı ve şifre bilgisi ile scanner/smb/smb_enumusers modülü kullanılarak sistemdeki kullanıcıları tespit edebiliriz.
user, root, admin adlı 3 farklı kullanıcının var olduğunu görüyoruz.
ms17_10 açığı varmı kontrol edelim. Olması durumunda bağlantı kurabilir, oturum açabiliriz.
ms17_10 zafiyeti mevcut değilmiş, tespit edilemedi. Smb de çok fazla bir şey bulamadık. Diğer portlardan devam edelim.
JENKINS
Açık olan 9000 portuyla tarayıcıya bağlandığımızda Jenkins adlı bir login sayfası karşımıza çıkmaktadır. Kimlik bilgileri elde edildikten sonra mfsconsole üzerinden jenkins_script_console istismar modülü ile Meterpreter bağlantısı elde edilebilir.
Kimlik bilgilerini öğrenmek için ilgili istismar modülüyle bir brute force saldırısı gerçekleştirelim.
Kullanıcı ve parola listesini tanımlayıp gerekli ayarlamaları da yaptıktan sonra atağı başlatalım. Doğru eşleşme olduğunda olumlu bir cevap alacağız. Çıktıda kullanıcı adı admin ile hello parolasının eşleştiğini görmekteyiz.
Hedef uygulamanın, işletim sistemi bilgilerini ve PAYLOAD bilgilerini girerek modül ayarlamamızı yapalım.
Meterpreter ile bağlantıyı kurduk ardından hemen bir shell alma işlemi gerçekleştirebiliriz.
Bundan sonrası için komut satırında yetkiler dahilinde istediğimiz işlemleri gerçekleştirebiliriz.
JOMLA
Bir başka açık port olan 8081 numaralı http portu için joomscan -u http://192.168.216.130:8081 komut satırıyla zafiyetleri ekrana getirelim. Belirtilen zafiyette login sayfasında bir parola değişebilmenin söz konusu olduğu belirtiliyor.
Tarayıcıda token alanının olduğu bu sayfaya giderek alana sadece ‘ (tırnak işaretini) yazarak submit ediyoruz.
Ardından karşımıza bir parola sayfası gelecektir. Bu sayfada parolayı istediğimiz şekilde değişebiliriz. Ben ‘toor ’ verdim örneğin. Admin kullanıcı adı ve belirlenen şifreyle aşağıdaki ekrana erişilebilir.
Terminal ekranından sistem üzerinde hazır bulunan reverse_php modülünü kullanarak 7777 portu üzeriden bağlantı sağlayarak php uzantılı bir shell dosyasını seçiyoruz.
Ardından base64 yapısında olan bu dosyayı görüntülüyoruz.
Bu kodu kopyalıyoruz.
Jomla sayfasından template manager kısmına giderek beez adlı kodu html olarak görüntüleyip ordaki kodu silerek kopyaladığımız kodu yapıştırıyoruz ve kaydediyoruz.
Kodu kaydettikten sonra tarayıcıdan aşağıda belirtilen kısma gidiyoruz.
Bu adrese geldiğimizde bizi boş bir sayfa karşılayacaktır. Bunun çok da önemi yok çünkü bağlantı kurmak için işe yaramaktadır.
Son olarak ise Natcat ile 7777 üzerinden bağlantı açıyoruz ve az önce gidilen adresi sayfasını yenliyoruz. Ardından bağlantı kurulacaktır.
Bağlantı sonrası hedef sistem üzerinde işlemler gerçekleştirebiliriz.