← Каталог / nodejs / Command Injection API сетевой диагностики Express выполняет ping через child_process.exec, но вывод не возвращается клиенту. Уязвимость подтверждается через задержку ответа (timing-based blind injection).
mediumnodejsPro
Задача
# Слепая инъекция команд (Blind Command Injection)
## Сценарий
Перед вами интернет-магазин SecureShop. Команда разработки добавила для зарегистрированных пользователей инструмент диагностики сети — Network Diagnostics, проверяющий доступность хоста через ping. На первый взгляд инструмент выглядит безопасно: ответ всегда одинаковый, и вывод системной команды пользователю не возвращается. Но если пользовательский ввод всё-таки попадает в системный вызов, эта классическая ошибка превращается в **Blind Command Injection** — атакующий выполняет произвольные команды, не видя их вывода напрямую, и подтверждает успех через побочные эффекты (задержки, файлы, сетевые запросы).
В системе есть административный аккаунт; CTF-флаг лежит в админ-панели. Ваша задача — найти blind-injection в инструменте диагностики, использовать её для разведки серверного окружения и получения admin-доступа, после чего забрать флаг.
## Что такое Blind Command Injection
В отличие от классической инъекции, где вывод команды виден в ответе, в blind-варианте:
- Сервер передаёт пользовательский ввод в интерпретатор shell.
- Вывод полностью скрыт (перенаправлен в `/dev/null` или иначе подавлен).
- Ответ всегда одинаковый, независимо от того, что было выполнено.
Это затрудняет обнаружение, но не делает уязвимость менее опасной: команды выполняются с полными правами серверного процесса.
## Техники обнаружения Blind Injection
- **Time-based** — вставка команды задержки в качестве второй команды; если ответ приходит позже обычного, инъекция работает. Самый быстрый способ подтверждения без внешней инфраструктуры.
- **File-based** — выполнение команды, записывающей данные в файл, доступный через HTTP. Содержимое файла читается через браузер.
- **Out-of-band** — эксфильтрация данных через DNS-запросы или HTTP-вызовы наружу (требует контролируемого сервера).
## Цели
1. Авторизуйтесь как обычный пользователь и найдите инструмент диагностики сети.
2. Подтвердите наличие blind command injection через одну из техник побочных эффектов.
3. Используя инъекцию, получите доступ к административному аккаунту приложения.
4. Войдите как admin и заберите CTF-флаг из админ-панели.
## Данные
| Параметр | Значение |
|----------|----------|
| Обычный пользователь | `demo` / `demo` |
| Цель | админ-доступ → CTF-флаг в админ-панели |
Похожие лабораторные
Ещё лабораторные по этому типу уязвимости
Панель администратора содержит инструмент диагностики сети, передающий ввод напрямую в child_process.exec() без фильтрации.
nodejseasyPro
Exploit Fix
Функция ping в админ-панели защищена blacklist-фильтром, блокирующим пробелы и ключевые слова cat/flag/tail/less/more. Фильтр обходится через ;id, ;env и другие конструкции без пробелов.
nodejshardPro
Exploit Fix
Веб-калькулятор вычисляет пользовательские выражения через eval(). Это даёт атакующему полный RCE: доступ к process.env, child_process и любым модулям Node.js.
nodejshardPro
Exploit Fix
Простая OS Command Injection через инструмент сетевой диагностики в админ-панели.
golangeasyPro
Exploit Fix
🚧 Сайт в разработке. Полный функционал пока недоступен. Все вопросы —
support@hackandfix.ru