Перейти к содержимому

Поиск по платформе

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

API сетевой диагностики Express выполняет ping через child_process.exec, но вывод не возвращается клиенту. Уязвимость подтверждается через задержку ответа (timing-based blind injection).

Автор: Hack & Fix
Освоишь: exec.Command argsбез shell -cinput allowlist
Средне+60 XP ~35 мин nodejs
CWE-77 · A03:2021 Pro
Обложка: Blind Command Injection: time-based инъекция без вывода в Node.js Обложка: Blind Command Injection: time-based инъекция без вывода в Node.js
Задача
# Слепая инъекция команд (Blind Command Injection) ## Сценарий **PacketHolic** — внутренний магазин инженерного мерча и сетевых девайсов на Node.js и Express. Опс-инженер Артём добавил в него для зарегистрированных пользователей раздел «Network Diagnostics»: сервер пингует указанный хост и сообщает, что проверка отправлена. Вывод утилиты Артём сознательно скрыл — не показывать же покупателям адреса внутренней сети, — и теперь уверен, что атаковать инструмент не на чем: ответ всегда одинаковый. Вам как аудитору безопасности поручено проверить, так ли это. ## Цель 1. Войдите как обычный пользователь и найдите инструмент сетевой диагностики. 2. Подтвердите наличие инъекции без прямого вывода — через измеримый побочный эффект. 3. Выполните собственные команды на сервере и добудьте учётные данные администратора. 4. Войдите как администратор и заберите CTF-флаг из админ-панели. ## Теория Слепая инъекция команд — вариант command injection, при котором вывод выполненных команд не возвращается атакующему. Сервер передаёт пользовательский ввод в строку системного вызова, которую исполняет интерпретатор shell: он воспринимает спецсимволы как разделители и операторы управления, поэтому одно поле ввода превращается в цепочку нескольких команд. Вывод подавлен, но команды работают с полными правами серверного процесса, и их побочные эффекты — задержка ответа, появление файлов, сетевые соединения — измеримы извне. **Уязвимый паттерн:** ```js // Значение host из формы склеивается с командной строкой: exec('ping -c 1 -W 3 ' + host, { timeout: 15000 }, () => { res.json({ status: 'ok', message: 'Ping sent successfully' }); }); ``` Значение поля `host` оказывается внутри строки, которую парсит shell. Дописав в значение поля разделитель команд и вторую команду, можно заставить сервер выполнить её сразу после пинга — и проверить успех по времени прихода ответа. ## Точка входа атаки `POST /api/network-diag` — форма диагностики сети (страница «Network Diagnostics»), поле `host`. От сервера ожидается корректный узел; ответ всегда один и тот же. * **Обычный пользователь:** `demo` / `demo` * **Цель:** `admin` / `???` — учётные данные администратора добываются по пути к флагу

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

другие лабы по этой уязвимости
Обложка лабы: Command Injection: Базовая инъекция команд в Node.js Обложка лабы: Command Injection: Базовая инъекция команд в Node.js
CMD Injection

Command Injection: Базовая инъекция команд в Node.js

Панель администратора содержит инструмент диагностики сети, передающий ввод напрямую в child_process.exec() без фильтрации.

+30 XP
Node.js Pro
Exploit Fix
Обложка лабы: Command Injection: Обход Blacklist-фильтра в Node.js Обложка лабы: Command Injection: Обход Blacklist-фильтра в Node.js
CMD Injection

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

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

+90 XP
Node.js Pro
Exploit Fix
Обложка лабы: Code Injection: eval() в Node.js калькуляторе Обложка лабы: Code Injection: eval() в Node.js калькуляторе
CMD Injection

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

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

+90 XP
Node.js Pro
Exploit Fix
Обложка лабы: Bypass Filters: Строгий WAF Обложка лабы: Bypass Filters: Строгий WAF
CMD Injection

Bypass Filters: Строгий WAF

Обход фильтрации пробелов и черного списка команд для RCE.

+60 XP
Go Pro
Exploit Fix