• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Статья Статья про инъекции команд | Command Injection

Введение
Всем привет, сегодня я расскажу о достаточно простой, но интересной на мой взгляд уязвимости. Итак, давайте по порядку. Суть заключается во внедрении команд ОС в поле ввода. Важно отметить разницу между инъекцией кода и инъекцией команды. При инъекции кода хакер вставляет свой код, который в дальнейшем воспроизводится приложением или программой, тогда как командная инъекция может использовать преимущества среды приложения, в которой выполняются системные команды. Эти понятия схожи, но то, что командная инъекция основана на нормальном поведении приложения, часто облегчает ее использование.

linux.jpg

Терминология
Внедрение команд ОС - это одна из разновидностей внедрения кода. Её особенностью является выполнение несанкционированных команд операционной системы на удалённом сервере через уязвимое приложение.

Если в отношении пользовательского ввода не осуществляется должная проверка, то приложение может быть уязвимы к данной атаке. Используя эту уязвимость, хакер может формировать ввод таким образом, что он будет содержать команды операционной системы, которые будут выполняться с привилегиями уязвимого приложения.

Используя данную уязвимость, мы можем получить доступ к:
  1. Файлам паролей операционной системы.
  2. Конфигурационным файлам операционной системы.
  3. Исходному коду приложения.
Способы защиты
Главная причина появления уязвимости к инъекциям команд/аргументов состоит в отсутствии корректной валидации входных данных.
Самый общий подход заключается в проверке входных данных на наличие разделителей команд и аргументов. Также необходимо убедиться в том, что внешние данные не приведут к подмене исходной команды.

  • Можно использовать функцию escapeshellcmd(), которая будет экранировать символы, которыми пользователь может воспользоваться для эксплуатации Command injection.
  • Белые списки. Белые списки более безопасны т.к. с их помощью разрешается для использования только определенный набор символов. Все остальные символы запрещены. Использование черных списков не рекомендуется т.к. злоумышленники все равно найдут способ его обойти. Если все же есть необходимость использования именно черного списка, то в этом случае необходимо тщательно фильтровать применение таких символов как: {} () <> & * '| = ; [] $ - # ~! . ”% / \: +,`
  • Используйте средства защиты веб-приложения, например, WAF.

Эксплуатация
Для примера, поиграем в Codeby Games и решим задачку под названием "Калькулятор" из категории "Веб" =)
Прежде, чем начать, нам нужно узнать как ввести нашу команду так, чтобы сервер воспринял её именно как команду, а не текст. Для этого используются специальные символы, вот некоторые из них:

Для ОС Windows:
&​
&&​
|​
||​
; (это универсальный символ)​

И также для ОС Unix:
`command`
$(command)
; (это универсальный символ)
Пробуем каждый из них и смотрим на результат.

1688022164144.png


По-хорошему, мы должны были узнать ОС через nmap, но я заранее знал, что там Linux Находим специальные символы для Unix-систем и пробуем в них команды. Как видим на скриншоте - результат есть.
Таким не хитрым образом мы сможем добыть флаг, просто вводя стандартные команды ОС Linux в окно ввода.
Важно заметить, что сам Codeby говорит нам о том, что они подключили WAF. Поэтому некоторые символы не работают.

Видеорешение этой задачки есть на канале D3L1F3R:


Литература

"ЗАЩИТА WEB-ПРИЛОЖЕНИЙ ОТ УЯЗВИМОСТИ COMMAND EXECUTION" / Беликов Георгий Витальевич, Крылов Илья Дмитриевич, Селищев Валерий Анатольевич

 
Последнее редактирование модератором:

ALT1RE

Cybercoliseum II
11.10.2020
42
61
BIT
232
Начал хорошо, а потом просто выложил прохождение таска(. Это не статья, это беглый райтап.
 
12.07.2022
15
11
BIT
29
Годная статья, подробностей про уязвимость можно и побольше) За статью-источник отдельное спасибо прямо. И канал отличный, спасибо автору, полезный, очень.
 
  • Нравится
Реакции: D3L1F3R
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!