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

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

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

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

Автор: Hack & Fix
Освоишь: exec.Command argsбез shell -cinput allowlist
Средне+60 XP ~35 мин python
CWE-77 · A03:2021 Pro
Обложка: Command Injection: Слепая инъекция команд (Timing-based) Обложка: Command Injection: Слепая инъекция команд (Timing-based)
Задача
# Инъекция команд (слепая, timing-based) ## Сценарий Вы — внешний пентестер, нанятый компанией «НордЛинк» — оператором сети небольших дата-центров. Во внутреннем портале для сотрудников есть магазин сувениров и инструмент проверки доступности хостов, которым техподдержка пользуется при ответах на заявки клиентов. После недавнего инцидента у конкурента руководство заказало проверку всех служебных инструментов портала до планового обновления. ## Цель 1. Войдите как обычный сотрудник и найдите инструмент сетевой диагностики. 2. Подтвердите слепую инъекцию команд: вывод утилиты скрыт, поэтому ориентируйтесь на косвенный признак — время ответа. 3. Через инъекцию добудьте пароль административного аккаунта из окружения серверного процесса. 4. Войдите администратором и заберите флаг из админ-панели. ## Теория Инъекция команд возникает, когда пользовательский ввод попадает в строку, которую операционная система выполняет через интерпретатор команд. Интерпретатор разбирает строку целиком: специальные символы-разделители позволяют завершить одну команду и дописать следующую. Если при этом вывод подавлен, уязвимость становится слепой: результат не виден, но команды всё равно выполняются с правами серверного процесса, и успех подтверждается побочными эффектами — например, задержкой ответа. **Уязвимый паттерн:** ```python cmd = subprocess.Popen( f"ping -c 1 -W 3 {host}", shell=True, ) ``` Значение из формы вставляется в строку команды напрямую, а ожидание завершения процесса — синхронное: любая дописанная команда с задержкой заметно оттянет ответ сервера. ## Точка входа атаки `POST /api/network-diag` — форма диагностики на странице `/network-diag`, поле `host`. Для входа в портал используйте `POST /login` с полями `username` и `password`. * **Обычный сотрудник:** `demo` / `demo` * **Администратор:** `admin` / `???` — его пароль предстоит добыть

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

другие лабы по этой уязвимости
Обложка лабы: 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: Базовая инъекция команд Обложка лабы: Command Injection: Базовая инъекция команд
CMD Injection

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

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

+30 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
Обложка лабы: Bypass Filters: Строгий WAF Обложка лабы: Bypass Filters: Строгий WAF
CMD Injection

Bypass Filters: Строгий WAF

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

+60 XP
Go Pro
Exploit Fix