Siber Güvenlik

SickOs: Sisteme sızma ve yetki elde etme

VulnHub’da yayınlanan CTF serilerinden birisi olan SickOs 1.1’in çözümünün anlatıldığı yazıya hoş geldiniz. İlgili CTF imajını VulnHub adresinden indirebilirsiniz.

Size tavsiyem yazının kalan kısımlarını okumadan önce imajı indirip kendi bilgilerinizi sınamanızdır.

SickOs: 1.1 adlı sanal makine kalıbımızı indirip import edelim ve başlatalım.Bizden kullanıcı adı ve parola istiyor.Elimizde herhangi bir parola yok.Sisteme sızıp gerekli bilgileri elde etmeye çalışalım.

 

Kali’ye geçip netdiscover komutu ile yerel ağda ki makinenin ip adresini bulalım.

Tarama sonucunda 4 tane ip adresi elde ediyoruz.

3 tanesi kendi makineme ait olduğunu bildiğimden 192.168.117.129 ip’ye yöneliyoruz, nmap taraması yapıp hangi portların açık o portlarda neler çalıştığını öğrenelim.

8080 nolu port kapalı ve http sunucu çalışıyor ,22 nolu açık ve portda ssh , 3128 nolu açık ve portda Squid proxy çalışıyor.

Squid Proxy: Web sayfalarını, içeriklerine ve alanadlarını göre engelleyerek kullancılarınızın giriş yapmasını engelleyebilirsiniz.

Hemen sayfaya curl ile istek atıp erişimi kontrol edelim.

Bağlantı başarısız oldu.Yani bu demek oluyor ki , bir şeyleri görmek için kendi bağlantımızı squid proxy üzerinden geçireceğiz.Curl kütüphanesinin -p parametresi ile proxy tüneli belirliyoruz ve istek atıyoruz.

İstek sonucu sayfada “BLEHHH! ” diye bir şeyin yazdığını görüyoruz.Bu bilgilerin yetersiz olduğunu düşünerek “dirb” ile proxy kullanarak dizin taraması yapalım.

Tarama sonucu robots.txt dosyasını terminalde görüyoruz tarayıcıda hemen açıp hangi dizinleri taramamıza izin verdiğini öğrenelim.

Yine sitemize erişmek için proxy ayarı yapalım.

wolfcms adında içerik yönetim scripti görüyoruz.

Websitesine girdiğimde php ile yazılmış olduğunu görüyoruz, sonra kendi hostumuza dönerek dizinleri gezelim , herhangi bir id= bulup sql-lfi-rfi gibi işimize yarayacak açıkları deneyelim.Fakat buna benzer birşey bulamıyorum.

Dizinlere atlarken dikkatimi çeken wolfcms/?blabla her dizinin başında soru işareti var.Bu bilgiyi kullanarak dirb ile tarama yaparak görünmeyen dizinleri bulalım.

Uzun tarama sonucunda admin dizini olduğunu görüyorum ama http durum kodu 302 yani yönlendirme var bu yönlendirme bir hata sayfasıda olabilir , bir dizine daha yönlendirme de olabilir.Test etmek için tarayıcıdan açalım.

 

Ve login sayfasına yönlendiriyor. Login olmak için kaba kuvvet saldırısı yapmak gerekiyor veya sql login bypass metotlarını denememiz  gerekiyor , onun öncesinde default şifrenin admin-password veya admin-admin olabileceğini düşünüp deniyorum ve admin-admin olarak giriş yapıyorum

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

Hemen msfvenom kullanarak php shell oluşturalım.

Oluşturduğumuz shelli kopyalayarak dpuzt.php adında oluşturduğumuz dosya içerisine nano ile yapıştıralım.

 

dpuzt.php dosyası sunucuda çalıştırdığında, bana ait 192.168.117.128 ip adresinin 4444. portuna bağlantı kurup hedef sitenin komut satırını çalıştığı işlem yetkileri ile bana iletecek.

Ardından metasploit ile dinleme moduna geçelim.

Siteye dönüp shellimizi yüklüyelim.Yüklenen dosyaların public dizini altında olduğunu görüp o dizine geçelim.

dpuzt.php dosyasına 1 kez tıklayarak çalışmasını sağlıyalım.

Ve meterpreter oturumu yakalamış oldu.

ls -la komutu ile bulunduğumuz dizini gizli dosyalar dahil her şeyi listeliyelim.

İşimize yarar bir şey göremiyorum.Bir alt dizine inip neler var diye bakalım.

Config.php şuanda işimize yarayacak en iyi dosya , içinde bağlantı ayarları yazar.Cat komutu ile terminale yazdıralım.

veritabanı adı:wolf

veritabanı kullanıcısı:root

veritabanı parolası:john@123

Unutmayalım ki bir sistemde elde ettiğimiz her kullanıcı adı/parola ilerde tekrar karşımıza çıkabilir.Bundan dolayı bu bilgileri not etmekte fayda var.

Sistemde root olmamız gerektiğinden etc dizinine geçip kullanıcılara ait kullanıcı adlarını/parolaları elde etmeye çalışalım. Etc dizini kısaca “kullanıcı hakkında ayrıntılı bilgilerin bulunduğu, kullanıcı veritabanı olarak da düşünebileceğimiz yerdir”.

cat passwd ile sistem hesaplarının listesini tutan dosyayı terminale yazıralım.

Home dizini altında sickos kullanıcısını görüyoruz.İlk adımlarımızda nmap taramasında ssh protokolü açıktı zaten bu kullanıcı adınıda kullanarak ssh bağlantısı yapmayı deneyelim.

 

Parola olarak config.php dosyasında bulduğum john@123 adlı parolayı deneyelim.

Ve bağlantı başarılı oldu.Şimdi ise root olup flag bulmamız gerekiyor.İlk önce giriş yaptığımız kullanıcı adının yetkilerini öğrenmek için id komutunu kullanalım.

Root yetkisinin olmadığını görüyoruz. Root dizinine geçmeye çalıştığımda da yetkimin olmadığını söylüyor zaten.

Sudo su komutu ile root olarak giriş yapmayı deneyelim , elimizde john@123 den başka parola olmadığından yine bu parolayı deneyeceğim.

Başarılı olarak giriş yaptık , ardından id ile yetkilerimizi kontrol edelim ve root yetkimizin oldugunu görüyorum.Hemen root dizinine geçip ls komutu ile listeliyelim ve flag aramaya devam edelim.

a0216ea4d51874464078c618298b1367.txt adında bir txt dosyası ve adının md5 algoritmasına benzediğini görüyoruz, hemen https://hashkiller.co.uk sitesine girip md5 algoritmasını sözlük saldırısı ile çözelim.

Şifrelenen kelime “bleh!!”  yani sitede yazan kelime , flagın bu dosya içinde olabileceğini düşünerek ekrana yazdıralım.

Ve tataaa içinde “eger bunu görüntülüyorsan!!  ROOT! başarıyla tamamladınız”.

İşlemlerin doğruluğunu denemek için işletim sistemine giriş yapalım ve gördüğümüz üzere sistemi ele geçirmiş bulunmaktayız.

 

Yazar Hakkında

Andhrimnir
Yazara ait blog yazıları eğitim amaçlıdır.Etik kuralların dışında kullanım sorumluluğu kullanıcıya aittir.
~Tanrı denizcilere yardım eder ancak kaptan dümende olmalıdır.

Bu makaleyi 4 dakikada okuyabilirsiniz.
Andhrimnir
Yazara ait blog yazıları eğitim amaçlıdır.Etik kuralların dışında kullanım sorumluluğu kullanıcıya aittir. ~Tanrı denizcilere yardım eder ancak kaptan dümende olmalıdır.