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

Blind Command Injection: time-based инъекция без вывода в Node.js

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-флаг в админ-панели |

Похожие лабораторные

Ещё лабораторные по этому типу уязвимости

CMD Injection

Command Injection: Обход Blacklist-фильтра в Node.js

Функция ping в админ-панели защищена blacklist-фильтром, блокирующим пробелы и ключевые слова cat/flag/tail/less/more. Фильтр обходится через ;id, ;env и другие конструкции без пробелов.

+90 XP ~75 минут
nodejshardPro
Exploit Fix
CMD Injection

Code Injection: eval() в Node.js калькуляторе

Веб-калькулятор вычисляет пользовательские выражения через eval(). Это даёт атакующему полный RCE: доступ к process.env, child_process и любым модулям Node.js.

+90 XP ~75 минут
nodejshardPro
Exploit Fix
CMD Injection

Basic Command Injection: Сетевой пинг

Простая OS Command Injection через инструмент сетевой диагностики в админ-панели.

+30 XP ~20 минут
golangeasyPro
Exploit Fix
🚧 Сайт в разработке. Полный функционал пока недоступен. Все вопросы — support@hackandfix.ru