LFI (Local File Inclusion) to podatność aplikacji webowej, w której nieprzefiltrowana wartość podana przez użytkownika jest użyta do wskazania pliku dołączanego przez serwer. Atakujący może w ten sposób odczytać pliki lokalne, takie jak konfiguracja czy logi, a czasem doprowadzić do wykonania kodu.
Jak powstaje LFI?
Typowy przykład to skrypt PHP, który dołącza plik na podstawie parametru z adresu: include($_GET['strona'] . '.php'). Wartość z sekwencją ../ pozwala wyjść poza zamierzony katalog (path traversal) i wskazać inny plik.
Skutki
Odczyt plików konfiguracyjnych z hasłami do bazy, kodu źródłowego i logów. Jeśli atakujący zdoła wstrzyknąć kod do dołączanego pliku, np. przez zatrucie logów, może uzyskać zdalne wykonanie kodu.
Jak się chronić?
Nie buduj ścieżek z danych użytkownika. Użyj listy dozwolonych wartości i mapowania nazw na pliki, waliduj dane wejściowe, ogranicz uprawnienia procesu serwera i wyłącz niepotrzebne funkcje w konfiguracji PHP.