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

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

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

Панель администратора содержит функцию ping, передающую ввод напрямую в shell без фильтрации.

Автор: Hack & Fix
Освоишь: exec.Command argsбез shell -cinput allowlist
Легко+30 XP ~20 мин php
CWE-77 · A03:2021 Pro
Обложка: Command Injection: Базовая инъекция команд Обложка: Command Injection: Базовая инъекция команд
Задача
# Инъекция команд ОС в сетевой диагностике ## Сценарий «Пингоград» — магазин сетевого оборудования и мини-АТС. Дежурный инженер Валерий Ким добавил в админ-панель инструмент «проверка доступности хоста»: вводишь адрес шлюза клиента — страница показывает вывод системной утилиты проверки связи. Валерий уверен, что инструмент защищён ролью администратора, но перед запуском попросил вас проверить его на прочность: вдруг форма позволит исполнить на сервере не только диагностику. ## Цель 1. Войдите администратором и откройте инструмент проверки доступности хоста в админ-панели. 2. Убедитесь, что введённое значение попадает в системную команду, исполняемую через оболочку. 3. Допишите к проверке узла команду чтения окружения процесса и получите строку флага прямо на странице диагностики. ## Теория Инъекция команд возникает, когда приложение собирает системную команду склейкой строки с пользовательским вводом и передаёт результат оболочке операционной системы. Оболочка интерпретирует управляющие символы как операторы: за разделителем можно дописать собственную команду, и она исполнится с правами процесса веб-приложения, а её вывод попадёт в общий ответ. **Уязвимый паттерн:** ```php // VULNERABILITY: прямая конкатенация user input в shell-команду $output = shell_exec("ping -c 3 " . $host . " 2>&1"); ``` Механика атаки: вместо осмысленного адреса в поле подставляется значение, начинающееся корректным аргументом, а за ним — разделитель команд оболочки и дописанная инструкция, например чтение переменных окружения процесса. Обе команды выполняются последовательно, и результат дописанной виден на странице рядом с выводом диагностики. ## Точка входа атаки `POST /admin/ping` — форма проверки хоста в админ-панели, поле `host`. * **Обычный пользователь:** `demo` / `demo` * **Администратор:** `admin` / `lab-secret`

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

другие лабы по этой уязвимости
Обложка лабы: Command Injection: обход blacklist-фильтра WAF Обложка лабы: Command Injection: обход blacklist-фильтра WAF
CMD Injection

Command Injection: обход blacklist-фильтра WAF

Админ-панель содержит функцию ping с blacklist-фильтром (пробел, ;, cat, flag). Фильтр обходится через ${IFS}, $(), backticks и регистр имени переменной окружения.

+60 XP
PHP Pro
Exploit Fix
Обложка лабы: Code Injection через eval() в PHP-калькуляторе Обложка лабы: Code Injection через eval() в PHP-калькуляторе
CMD Injection

Code Injection через eval() в PHP-калькуляторе

Пользовательский ввод передаётся в eval(), позволяя выполнить произвольный PHP-код.

+90 XP
PHP Pro
Exploit Fix
Обложка лабы: Basic Command Injection: Сетевой пинг Обложка лабы: Basic Command Injection: Сетевой пинг
CMD Injection

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

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

+30 XP
Go Pro
Exploit Fix
Обложка лабы: Command Injection: Базовая инъекция команд в Node.js Обложка лабы: Command Injection: Базовая инъекция команд в Node.js
CMD Injection

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

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

+30 XP
Node.js Pro
Exploit Fix