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

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

Blind Command Injection через сетевую диагностику

Обработчик сетевой диагностики передаёт пользовательский ввод в sh -c без фильтрации. Результат команды не отображается — используйте time-based технику для подтверждения инъекции.

Автор: Hack & Fix
Освоишь: exec.Command argsбез shell -cinput allowlist
Сложно+90 XP ~65 мин golang
CWE-77 · A03:2021 Pro
Обложка: Blind Command Injection через сетевую диагностику Обложка: Blind Command Injection через сетевую диагностику
Задача
# Blind Command Injection (слепое выполнение команд через диагностику сети) ## Сценарий Вы проводите аудит **CargoLink** — портала логистической компании на Go. Операторы просили инструмент проверки доступности узлов, и разработчик выкатил API сетевой диагностики: сервер пингует указанный хост, но вывод команды не возвращается — клиент получает лишь подтверждение, что запрос отправлен. Разработчик считает конструкцию безвредной именно из-за отсутствия вывода. Но спрятанный вывод не значит отсутствия исполнения: команда всё равно запускается, и это классическая слепая инъекция, которую подтверждают по побочным эффектам. ## Цель 1. Подтвердите инъекцию косвенно: заставьте сервер выполнить команду с заметной длительностью и сравните время ответа с обычным запросом. 2. Через слепой канал извлеките пароль администратора — он доступен процессу приложения. 3. Войдите как администратор и получите флаг из админ-панели. ## Теория **Blind Command Injection** — подвид внедрения команд, при котором вывод команды не попадает в ответ. Причина та же, что у обычной инъекции: ввод конкатенируется в строку команды для системной оболочки. Отличается канал эксплуатации: * **Time-based** — дописанная команда искусственно задерживает ответ; разница времён подтверждает исполнение. * **Out-of-band** — команда инициирует исходящий запрос на подконтрольный вам сервер; факт обращения виден в его логах. * **Условная задержка** — ожидание ставится под условие, зависящее от одного символа искомого значения; перебором позиций и символов данные извлекаются по одному знаку. **Уязвимый паттерн:** ```go // Ввод конкатенируется в команду; вывод отбрасывается: cmd := exec.Command("sh", "-c", "ping -c 1 -W 3 "+host) _ = cmd.Run() ``` Слепота не снижает опасность: с правами процесса исполняется любая команда — чтение файлов, переменных окружения, исходящие соединения. ## Точка входа атаки `POST /api/network-diag` — поле `host`; требуется сессия любого зарегистрированного пользователя. * **Обычный пользователь:** `demo` / `demo` * **Администратор:** логин `admin`; пароль хранится в переменных окружения процесса — его и требуется извлечь * **Флаг:** отображается в админ-панели после входа администратором

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

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

Argument Injection в архиваторе файлов

Обработчик архивации файлов использует exec.Command без shell, но не фильтрует аргументы, начинающиеся с '-'. Атакующий может внедрить произвольные флаги команды tar.

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

Bypass Filters: Строгий WAF

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

+60 XP
Go 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: Обход 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