Перейти к содержимому
← Каталог nodejs Path Traversal

Path Traversal: Обход naive blacklist-фильтра в Express

Эндпоинт скачивания файлов фильтрует путь через replace('../', '') без флага /g — фильтр срабатывает только один раз, и любая цепочка ../../../ обходит его.

mediumnodejsPro
Задача
# Path Traversal: обход naive blacklist-фильтра ## Сценарий Перед вами Express-приложение интернет-магазина SecureShop. Эндпоинт скачивания изображений товаров принимает имя файла из параметра запроса и возвращает содержимое из директории со статикой. В отличие от базовой Path Traversal-уязвимости, в этой реализации разработчик уже знал про класс проблемы и **добавил защиту** — пропускает имя файла через простой blacklist-фильтр, удаляющий подстроку `../`. Однако фильтр реализован поверхностно: он отрабатывает ровно один раз, не повторно. В результате цепочки обхода директории сохраняются после «защиты» и проходят дальше в склейку с базовой директорией. В системных файлах сервера и переменных окружения процесса есть данные, ведущие к CTF-флагу. ## Цели 1. Найдите эндпоинт скачивания файлов и убедитесь, что он принимает имя файла из параметра запроса. 2. Определите эмпирически: блокирует ли «защита» классический traversal через `../`, или достаточная цепочка проходит беспрепятственно. 3. Прочитайте через path-traversal данные за пределами публичной директории, выйдите на CTF-флаг и сдайте его на странице профиля. ## Данные | Параметр | Значение | |----------|----------| | Обычный пользователь | `demo` / `demo` |
🚧 Сайт в разработке. Полный функционал пока недоступен. Все вопросы — support@hackandfix.ru