OWASP DVWA – File Upload (Orta Seviye): Dosya Yükleme Zafiyeti Bulunan Uygulamaya Hazırlanan PHP Dosyasının Yüklenmesi ve İşletim Sisteminde Komut Çalıştırılması

Web uygulamaları sızma testleri sırasında hedef uygulama üzerindeki bir kontrol eksikliği sebebi ile hedef sunucuya beklenmedik tipte dosyalar yüklenebilir. Bu yazıda, OWASP DVWA (Damn Vulnerable Web App) üzerindeki orta zorluk seviyesindeki File Upload açıklığı istismar edilecek ve hedef uygulamanın komut satırına erişim sağlanacaktır.

Mevcut uygulamada kullanıcıdan bir resim dosyası yüklenmesi beklenmektedir.

http://10.10.2.156/dvwa/vulnerabilities/upload/

 

Yüklenen resim dosyasının yeri de ekrana basılmaktadır. Bu bilgiye göre dosya, mevcut dizinin 2 üst dizininde bulunan “hackable/uploads” dizinine kaydedilmektedir.

../../hackable/uploads/Resim.jpg succesfully uploaded!

 

Kaydedilen resim ve resmin kaydedildiği dizin aşağıdaki gibidir.

http://10.10.2.156/dvwa/hackable/uploads/
http://10.10.2.156/dvwa/hackable/uploads/Resim.jpg

 

Gerekli kontrollerin yapılmadığı durumda hedef uygulamaya resim yerine başka dosyalar da yüklenebilir. Örneğin zararlı bir PHP sayfası hedef sunucuya yüklenebilir ve kabuk erişimi elde edilebilir.

Hedef uygulamaya yüklenecek bir PHP sayfası aşağıdaki gibidir.

 

Kullanılabilecek bir diğer sayfa ise aşağıdaki gibi olabilir.

 

Üçüncü örnek bir sayfa da aşağıdaki gibidir.

 

Dördüncü örnek bir sayfa da aşağıdaki gibidir.

 

 

Trafiğin İncelenmesi

Hazırlanan sayfanın hedef uygulamaya yüklenemediği görülmektedir.

 

Sunucu ve istemci arasındaki trafiğin arasına Burp Suite aracı ile girilebilir.

Trafik incelendiğinde, “Resim.jpg” dosyası hedef uygulamaya yüklenirken dosya tipinin “image/jpeg” olduğu görülmektedir.

 

Yüklenmek istenen PHP sayfasının tipinin ise “application/octet-stream” olduğu görülmektedir.

 

Uygulama incelendiğinde dosyanın tipine göre kontrol yaptığı görülecektir.

 

Yöntem – 1: Dosya Tipinin Değiştirilmesi

PHP sayfası yüklenirken araya girilen trafikte “Content-Type:” alanına karşılık gelen değer “application/octet-stream” yerine “image/jpeg” yapılarak uygulamanın vereceği cevap beklenebilir.

 

Böylece dosyanın hedefe yüklenebildiği görülmektedir.

 

Sayfa çağırıldığında hedef sistemin işletim sisteminde çalıştırılabilecek bir formun sunulduğu görülmektedir.

http://10.10.2.156/dvwa/hackable/uploads/YeniSayfa.php

 

Böylece işletim sistemi üzerinde uygulama kullanıcısı (www-data) yetkileri ile komut çalıştırılabilmektedir.

id; uname -a; head -3 /etc/passwd
http://10.10.2.156/dvwa/hackable/uploads/YeniSayfa.php?Komut=id%3B+uname+-a%3B+head+-3+%2Fetc%2Fpasswd

 

Yöntem – 2: Dosya Uzantısının Değiştirilmesi

PHP sayfasının dosya uzantısı “.jpg” olarak değiştirilerek uygulamanın vereceği cevap incelenebilir.

 

Not: Benzer olarak “YeniSayfa.php;.jpg” gibi bir isim de verilebilirdi. Bu uygulamada sadece belli türdeki (“image/jpeg” gibi) dosyaların yüklenmesine izin verilmektedir, yani whitelisting uygulanmaktadır. Eğer kara liste yöntemi uygulansa ve PHP gibi türlerdeki dosyaların yüklenmesi yasaklansa idi “YeniSayfa.php.birseyler” gibi bilinmeyen uzantıdaki bir türde veya büyük/küçük harf duyarsız olan kara listelerin kullanıldığı durumlarda “YeniSayfa.pHp” gibi isimlendirilmiş dosyalar da yüklenebilirdi.

Dosya yüklenirken araya girilen trafikte “Content-Type:” alanının otomatik olarak “image/jpeg” algılandığı (sniff edildiği) görülmektedir.

 

Araya girilen trafikte yüklenecek dosyanın uzantısı eski haline getirildiğinde (“php.jpg”‘den “php” olarak güncellediğinde) uygulamanın vereceği cevap beklenebilir.

 

Böylece dosyanın hedefe yüklenebildiği görülmektedir.

 

İlgili Kaynak Kod:

 

Kaynak:

http://www.includekarabuk.com/kategoriler/DVWAUygulamasi/Ders-12—File-Upload-Medium-Level.php

Hack File upload Vulnerability in DVWA (Bypass All Security)


https://pentestlab.blog/2012/11/29/bypassing-file-upload-restrictions//

 

 

 

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.