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

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

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

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

Автор: Hack & Fix
Освоишь: exec.Command argsбез shell -cinput allowlist
Легко+30 XP ~20 мин nodejs
CWE-77 · A03:2021 Pro
Обложка: Command Injection: Базовая инъекция команд в Node.js Обложка: Command Injection: Базовая инъекция команд в Node.js
Задача
# Command Injection (Инъекция команд ОС) ## Сценарий Вы проводите аудит **BugBazaar** — интернет-магазина оборудования для тестирования на проникновение, построенного на Node.js и Express. Ночью из контейнера приложения исходили подозрительные сетевые соединения, а последним новшеством в панели администратора оказался инструмент «проверка доступности хоста». Вам поручают выяснить, безопасно ли он реализован. ## Цель 1. Войдите под учётной записью администратора и найдите инструмент диагностики сети. 2. Исследуйте обработку поля «хост»: проверьте, попадает ли введённое значение в системную команду без изменений. 3. С помощью инъекции команды добейтесь вывода секрета, который приложение хранит в переменной окружения, — это и есть флаг. ## Теория Инъекция команд возникает, когда пользовательский ввод становится частью строки, исполняемой оболочкой операционной системы. Оболочка читает такую строку целиком и распознаёт в ней собственные управляющие конструкции — разделители команд и подстановки. **Уязвимый паттерн:** ```js // Ввод пользователя вшивается в командную строку: const cmd = `ping -c 3 ${host}`; // Строка целиком уходит оболочке на исполнение: exec(cmd); ``` Если к адресу хоста дописать разделитель команд и собственную инструкцию, оболочка выполнит обе команды — и вывод второй попадёт в ответ страницы. ## Точка входа атаки `POST /admin/ping` — форма диагностики сети в панели администратора, поле `host`. * **Администратор:** `admin` / `lab-secret` * **Обычный пользователь:** `demo` / `demo`

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

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

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

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

+60 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
Обложка лабы: Basic Command Injection: Сетевой пинг Обложка лабы: Basic Command Injection: Сетевой пинг
CMD Injection

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

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

+30 XP
Go Pro
Exploit Fix