OS Command Injection

OS Command Injection

https://t.me/e7team

Всем привет!

Сегодня мы рассмотрим уязвимость OS Command Injection ("внедрение команд").

Введение:

OS Command Injection (далее OCI) это уязвимость, которая позволяет хакеру вводить любые команды на интерфейсе уязвимого WEB-приложения и эти команды будут выполняться на стороне сервера.

OCI это одна из разновидностей инъекций, к которым также относятся: PHP-injection, SQL-injection, LDAP-injection и др. Возможность использования данной уязвимости появляется из-за того, что зачастую WEB-серверы реализуют в себе функции с помощью которых происходит взаимодействие данных, между пользователем и серверной операционной системой.

Если пользовательский ввод никак не фильтруется, то возникает опасность полной компрометации данных WEB-сервера вплоть до исходного кода приложения.

Основное:

Существует 2 разновидности OCI. В первом случае при выполнении команды, перед пользователем предстанут выходные данные, как результат введенных им команд. Для примера, мы покажем как выполняются простые OCI на уязвимом WEB-приложении DVWA.

Итак, запускаем DVWA и выбираем вкладку Command Execution (рис.1).

рис.1

Перед нами предстало WEB-приложение, якобы бесплатного пинга. Вот и давайте пропингуем гугл и узнаем еще что-нибудь интересное. Далее вводим 8.8.8.8, это IP-адрес публичного DNS-сервера гугла, а вслед за адресом добавим еще что-нибудь интересное, например: ls; whoami; uname -a (рис.2).

рис.2

При вводе команд мы разделяли их специальными символами ; и &&. Эти символы нужны чтобы разделять команды и объединять их в цепочки.

Итак, что мы увидели на выходе ? Имя пользователя: www-data с помощью команды whoami, каталоги файлов: help, index.php, source с помощью команды ls, а также информацию о системе с помощью команды uname -a: Linux metasploitable 2.6.24-16-server #1 SMP Thu Apr 10 13:58:00 UTC 2008 i686 GNU/Linux.

(Внимание! В зависимости от операционной системы сервера (Win/*nix), символы разделители и введенные команды, будут различаться. Например в OS на базе Windows символ ";" работать не будет.)

Во втором случае, пользователь не получит HTTP ответ от сервера, при этом введенные им команды все равно будут выполняться или не будут (Сервер сообщит об ошибке). Это называется слепое внедрение команд. В связи с этим, у данного типа атаки есть множество вариаций. Далее мы рассмотрим слепое внедрение с перенаправлением вывода. В качестве примера мы решим лабу на https://portswigger.net/web-security/os-command-injection .

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

Нам понадобится наш любимый Burp-Suite. Далее я пошагово распишу, что мы будем делать. Для начала подключаемся к лабе и переходим на страницу сервиса, там мы видим Submit feedback (Оставить отзыв), нажимаем и попадаем в форму для заполнения. Можем заполнить на бум, главное чтобы email был неважно какой, но настоящий. Отправляем фидбэк и перехватываем запрос в burp. Далее, сразу после email нам нужно вставить "наш email=||whoami>/var/www/images/output.txt||". С помощью этой строки, мы можем выполнить перенаправление вывода команды, тем самым изменив запрос который загружает изображение, для того чтобы увидеть данные о пользователе, чтобы отправить запрос мы нажимаем Forward в левом верхнем углу, чтобы отклонить запрос нужно нажать Drop (рис.3).

рис.3

После того как мы отправили фидбэк с нашим измененным запросом, нам нужно вернуться на страницу приложения. Далее перезагружаем страницу и снова перехватываем запрос с файлом изображения (рис.4).

рис.4

Следующий шаг это изменение параметра filename на наше значение, которое мы указывали в изменённом запросе, это output.txt (рис.5).

рис.5

Отправив запрос и перезагрузив страницу на сервисе, мы увидим что изображение исчезло, а заглянув в историю HTTP запросов burp, мы можем увидеть GET ответ от сервера, с выполненной командой whoami (рис.6).

рис.6

Вывод:

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

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


Report Page