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

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

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

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

Автор: Hack & Fix
Освоишь: exec.Command argsбез shell -cinput allowlist
Легко+30 XP ~20 мин python
CWE-77 · A03:2021 Pro
Обложка: Command Injection: Базовая инъекция команд Обложка: Command Injection: Базовая инъекция команд
Задача
# Инъекция команд ОС ## Сценарий **NetProbe** — интернет-магазин сетевого оборудования. Поддержке регулярно нужно проверять доступность узлов, и разработчик добавил в панель администратора инструмент диагностики: форма, которая по введённому хосту запускает системную утилиту проверки связи. Вас пригласили проверить этот инструмент: есть подозрение, что введённый адрес попадает в системную команду без какой-либо обработки — и тогда поле ввода превращается в пульт управления сервером. ## Цель 1. Войдите как администратор и найдите раздел диагностики сети в панели управления. 2. Исследуйте обработку поля ввода хоста: можно ли дополнить вызов утилиты ещё одной командой. 3. С помощью инъекции команды выведите значение флага, хранящегося в переменной окружения лаборатории. ## Теория Command Injection возникает, когда приложение собирает строку системной команды, подставляя в неё пользовательский ввод, и передаёт строку в оболочку. Оболочка трактует ряд символов как разделители: всё, что стоит после такого разделителя, выполняется как отдельная инструкция с правами приложения. **Уязвимый паттерн:** ```python output = os.popen(f"ping -c 3 {host}").read() ``` Адрес хоста вставляется в командную строку как обычный текст. Встретив разделитель команд в поле, оболочка завершает вызов утилиты и исполняет продолжение строки — атакующий дописывает к легитимному запросу собственную команду, и её вывод попадает в ответ страницы. Класс проблемы — OS Command Injection (CWE-78; OWASP A03:2021 Injection): итог — произвольные команды на сервере. ## Точка входа атаки `POST /admin/ping` — форма диагностики сети с полем `host`; раздел панели доступен только администратору. * **Администратор:** `admin` / `SuperSecret` * **Обычный пользователь:** `demo` / `demo`

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

другие лабы по этой уязвимости
Обложка лабы: Command Injection: Слепая инъекция команд (Timing-based) Обложка лабы: Command Injection: Слепая инъекция команд (Timing-based)
CMD Injection

Command Injection: Слепая инъекция команд (Timing-based)

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

+60 XP
Python Pro
Exploit Fix
Обложка лабы: Command Injection: eval() Injection Обложка лабы: Command Injection: eval() Injection
CMD Injection

Command Injection: eval() Injection

Калькулятор на e-commerce сайте вычисляет выражения через eval(), позволяя любому авторизованному пользователю выполнить произвольный Python-код.

+60 XP
Python Pro
Exploit Fix
Обложка лабы: Command Injection: Обход Blacklist WAF Обложка лабы: Command Injection: Обход Blacklist WAF
CMD Injection

Command Injection: Обход Blacklist WAF

Функция ping защищена blacklist-фильтром, блокирующим пробелы и ключевые слова. Фильтр обходится через ${IFS}, brace expansion и другие техники.

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

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

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

+30 XP
Go Pro
Exploit Fix