Такие читатели, как вы, помогают поддерживать MUO. Когда вы совершаете покупку по ссылкам на нашем сайте, мы можем получать партнерскую комиссию. Читать далее.

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

Так что же такое атака с внедрением команд ОС?

Определение внедрения команд ОС

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

Чтобы лучше понять обнаружение и использование внедрения команд ОС, полезно рассмотреть эту проблему в трех основных категориях.

1. Прямой ввод команд

Рассмотрим это с точки зрения злоумышленника. Злоумышленник обнаруживает, что приложение выполняет определенную системную команду; они вводят вредоносную команду как часть ожидаемых аргументов. Затем приложение выполняет исходную команду, а затем вредоносную.

Злоумышленник использует различные подходы для поиска такой уязвимости. Самый простой способ борьбы с этим — постоянно обновлять операционную систему; вы можете сделать это в сотрудничестве с компетентной ИТ-командой. Вам следует избегать всех приложений и программ, которые могут вызвать уязвимость системы, потому что злоумышленник может напрямую вставить код, а ущерб непредсказуем.

2. Косвенное введение команд

В случае косвенного внедрения команды злоумышленник не вводит код или команду в систему напрямую. Для этого они используют уязвимое приложение или программу в системе. Уязвимость создает мост между злоумышленником и операционной системой. Воспользовавшись этим общением, злоумышленник стремится запустить вредоносные коды и команды на цели.

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

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

3. Слепая инъекция команд

Другой тип внедрения команд ОС — слепое внедрение команд. Это означает, что приложение не возвращает никаких выходных данных команды в ответе HTTP. Злоумышленник использует различные методы, такие как временная задержка и маршрутизация вывода, чтобы использовать эту уязвимость.

Представьте, что вы ищете веб-сайт, и значение «/?search=id» в URL меняется при каждом поиске. Значением id здесь может быть страница пользователя, адрес фотографии товара или любая страница на сайте. Злоумышленник может получить разные результаты, изменив значение идентификатора. Вручную это сделать сложно, но есть такие инструменты, как Burp Suite для этого. Позже злоумышленник обнаруживает странность на странице: может быть возвращено значение id, которое, даже если оно не показало никаких результатов, ответ сайта был 200, что говорит о том, что все в порядке. В таком случае злоумышленник может использовать слепую инъекцию команды.

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

Пример сценария атаки

Давайте рассмотрим все вышесказанное на примере. Представьте, что у вас есть приложение для покупок, которое позволяет пользователю видеть, есть ли товары в наличии. Давайте используем URL-адрес, подобный приведенному ниже, для доступа ко всей этой информации:

example_unsafe_store.com/stockStatus? идентификатор продукта = 245 и идентификатор магазина =

Представьте, что ID продукта и хранилища передаются в качестве аргументов команде оболочки, такой как «stockstat.pl 245 38», поскольку приложению пришлось бы запрашивать старые записи. Если разработчик не предпринимает никаких действий против внедрения команд, злоумышленник может отправить ввод для выполнения желаемой команды:

& эхо this_a_harmful_command &

Если эта запись находится в параметре productID, команда, выполняемая приложением, будет следующей:

stockstat.pl & эхо this_a_harmful_command & 38

Команда echo — это полезный метод для обнаружения внедрения команд, а также для проверки того, что заданная строка появляется в выводе. Символ «&» является разделитель команд оболочки, так что выполняются три отдельные команды, одна за другой. В результате вывод, возвращаемый пользователю, будет:

Ошибка -productID не найден
this_a_harmful_command
38: команда не найдено

Здесь файл «stockstat.pl» выполнил команду без ожидаемых аргументов и, следовательно, вернул сообщение об ошибке. Затем запустилась команда echo, введенная злоумышленником, и злоумышленник увидел введенное им выражение на экране. Исходный аргумент "38" выполнялся как вызывающая ошибку команда.

Как защититься от внедрения команд ОС

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

  1. Вы должны запретить любому, у кого есть доступ к приложению, возможность запуска кода.
  2. Вы должны запретить любому, у кого есть доступ к приложению, делать запросы к серверу с помощью синтаксических выражений.
  3. Вы должны шифровать фразы, которые любой, у кого есть доступ, делает запрос.

Давайте пройдемся по каждому пункту один за другим. Хорошим решением первой проблемы является использовать метод белого списка чтобы никто, достигший прикладного уровня, не запускал определенные коды или запросы. Любой, кого вы не идентифицируете, не сможет запускать код.

Решение второго — не принимать некоторые текстовые выражения, используемые в командах. Пользователь может вводить только числовые значения. Примените это вместе с методом белого списка, и вы получите гораздо более безопасную систему.

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

Инъекционные атаки развиваются каждый день

Существует множество методов внедрения с различными методами атаки, такими как команда ОС, SQL, SSI и XPath. Нелегко пытаться предотвратить каждую из них. Имейте в виду, что все эти атаки развиваются с каждым днем ​​и используют небольшие уязвимости, которые проглядели разработчики. Вот почему так важно, чтобы вы всегда были в курсе последних событий и внимательно следили за текущими событиями в мире кибербезопасности.