Командная инъекция — это уязвимость, при которой злоумышленник может передать в веб-приложение свою команду, а та будет выполнена на сервере с правами приложения.
Это один из самых опасных видов атак: он даёт прямой доступ к операционной системе, а значит — к данным, файлам, внутренней сети и даже полной компрометации сервера.
Как работает командная инъекция
Многие веб-приложения взаимодействуют с ОС: вызывают скрипты, утилиты, обрабатывают файлы, проверяют соединения. Если разработчик напрямую подставляет пользовательский ввод в системную команду без фильтрации, появляется уязвимость.
Пример (PHP):
<?php
$ip = $_GET['ip'];
echo shell_exec("ping -c 4 " . $ip);
?>
Если в ip
подставить 8.8.8.8; cat /etc/passwd
, сервер после пинга выполнит и команду cat
.
Поиск и проверка уязвимостей
Пентестеры проверяют:
-
Формы и поля ввода, которые вызывают системные действия (пинг, поиск, архивирование).
-
API-методы, принимающие параметры, которые могут попасть в команду.
-
Неочевидные точки ввода — заголовки HTTP, cookies, параметры файлов.
Для проверки используют специальные символы:
-
;
,&&
,||
— для последовательного выполнения команд. -
|
— для передачи вывода одной команды в другую. -
Обратные кавычки
`команда`
и$(команда)
— для подстановки.
Внедрение команд в Linux и Windows
-
Linux: стандартные разделители
;
,&&
,|
, подстановка команд. -
Windows: символы
&
,|
, использованиеcmd.exe
с ключами.
Обход фильтров и защит
Разработчики часто пытаются блокировать опасные символы и команды, но это не всегда работает.
Методы обхода:
-
Пробелы заменяются на
${IFS}
или%20
. -
Разделители заменяются на их кодировки (
%0a
,%0d
). -
Запрещённые слова (например,
cat
) маскируются:c''at
,ca\t
.
Обфускация — искусственное усложнение полезной нагрузки, чтобы пройти фильтры.
Инструменты для тестирования и обхода
-
Burp Suite — перехват и модификация запросов.
-
FFUF или wfuzz — автоматический перебор полезных нагрузок.
-
Commix — специализированный инструмент для поиска и эксплуатации командных инъекций.
Как защитить приложение
-
Никогда не передавать пользовательский ввод напрямую в системные команды.
-
Использовать безопасные API и функции (например,
escapeshellarg
в PHP). -
Применять валидацию и белые списки значений.
-
Ограничивать права пользователя приложения в ОС.
-
Логировать все обращения и регулярно проводить аудит.
Почему командные инъекции так опасны
В отличие от многих уязвимостей, XSS или SQL-инъекций, командная инъекция даёт контроль не только над приложением, но и над всей системой. Даже одна строчка уязвимого кода может превратить сервер в полностью скомпрометированный узел.
Хотите научиться находить, эксплуатировать и закрывать командные инъекции?
В модуле «Командные инъекции» вы пройдёте путь от поиска уязвимых точек до обхода фильтров и защиты, а в одном из практических заданий получите полный доступ к серверу через веб-шелл. 7 уроков с практикой дадут навык, который можно применить в пентесте и защите приложений.
📘 Понравилась статья?
Больше практики и реальных заданий — в Kraken Academy.
А чтобы точно ничего не пропустить — подпишись на наш Telegram-канал.
Рекомендуемые статьи
