
Laravel-RCE: CVE-2017-9841
Laravel-RCE: CVE-2017-9841
CVE-2017-9841 — это критическая уязвимость удаленного выполнения кода (RCE), затрагивающая библиотеку PHPUnit, широко используемую для автоматизированного тестирования в PHP. Эта ошибка позволяет злоумышленнику выполнять произвольные команды на сервере при получении доступа к определенному файлу PHPUnit, доступному публично.
📌 Основные детали Идентификатор: CVE-2017-9841 GOOGLE DORK "inurl:"/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php" Затрагиваемый продукт: PHPUnit (компонент phpunit/phpunit)
Уязвимые версии: ниже 5.6.3 и 4.8.28
Тип уязвимости: удаленное выполнение кода (RCE)
Воздействие: Критическое – позволяет злоумышленнику выполнять произвольный PHP-код на сервере.
🔍 Как работает уязвимость Проблема заключается в файле eval-stdin.php, расположенном по адресу:
text /vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php (или по аналогичным путям, в зависимости от структуры проекта).
Этот файл был предназначен для внутреннего использования PHPUnit, но во многих установках он остается общедоступным. Код этого файла просто считывает данные из стандартного ввода (php://input) и напрямую выполняет их с помощью функции eval(). То есть любой POST-запрос, отправленный к этой конечной точке, будет обработан как PHP-код.
Пример эксплуатации Злоумышленник может отправить HTTP POST-запрос к уязвимому файлу, содержащий, например:
http POST /vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1
Host: alvo.com
Content-Type: application/x-www-form-urlencoded
Payload 🛡️ " "
Сервер выполнит код и вернет вывод, подтверждая выполнение.
После этого злоумышленник может расширить атаку для получения обратной оболочки, чтения конфиденциальных файлов, изменения данных и т.д.
🛡️ Смягчение Обновить PHPUnit до исправленной версии (≥ 5.6.3 или ≥ 4.8.28).
Удалить или ограничить доступ к каталогу vendor/phpunit/ в производственных средах, так как библиотеки для тестирования не должны быть общедоступны.
Настроить сервер на блокировку запросов к типичным тестовым файлам, например, eval-stdin.php.
Использовать межсетевой экран приложения (WAF) для обнаружения и блокировки попыток эксплуатации.
📚 Дополнительный контекст Эта уязвимость стала широко известна, так как многие проекты невольно оставляют каталог vendor доступным для всех. Поскольку PHPUnit является распространенной зависимостью в PHP-проектах (включая такие фреймворки, как Laravel, Symfony и др.), случайное раскрытие происходит часто. Поэтому это один из первых векторов, проверяемых в автоматизированных сканерах безопасности.
Если вы разработчик или системный администратор, проверьте, не имеет ли ваш работающий сайт файл eval-stdin.php, доступный извне.