Истории успеха наших клиентов — лучшие проекты
Вход/ Регистрация

Как защитить свой сервер от уязвимости Shellshock Bash

708
5 минут чтения
Средний рейтинг статьи: 5

Как и любое другое программное обеспечение, командная оболочка Bash тоже содержит в себе различные уязвимости. Одной из таких уязвимостей является Bashdoor также известная под другим названием — Shellshock Bash. Впервые данная уязвимость была обнаружена еще в сентябре 2014 года. Ей был присвоен наивысший уровень критичности — 10 баллов по десятибалльной шкале (для CVSS версии 2.0) и 9.8 баллов для CVSS версии 3.0.

Суть уязвимости заключается в следующем: злоумышленник может удаленно выполнять произвольные команды, тем самым получая неограниченный доступ к системе.

Уязвимости Shellshock Bash может быть подвержена практически любая ОС семейства Linux, так как оболочка Bash используется по умолчанию почти во всех современных дистрибутивах Linux.

В данной статье мы рассмотрим всевозможные способы, как защитить свой сервер от уязвимости Shellshock Bash.

Принцип работы уязвимости Shellshock Bash

Как уже было сказано ранее, суть Shellshock Bash заключается в возможности удаленного выполнения произвольных команд на атакуемой системе. Причина возникновения данной уязвимости заключается в том, что Bash завершает обработку команд при импорте функций которые хранятся в переменной окружения среды. Иными словами, угроза заключается в возможности установки переменных окружения внутри интерпретатора Bash, в которых объявляются функции. Сама уязвимость возникает, когда Bash продолжает обрабатывать команды после объявления функции. В результате происходит атака с внедрением вредоносного кода. Рассмотрим уязвимость на конкретном примере:

    

В данном примере мы определили HTTP запрос который состоит из функции, заданной при помощи символов () { :; }, а также содержит в себе команду интерпретатора — ping с указанным параметром в виде IP-адреса. Вместо команды ping можно подставить любую другую команду. В примере выше удаленная команда выполняет ping IP-адреса на удаленном хосте после объявления функции.

Также Shellshock Bash можно использовать в CGI скриптах:

    

И в HTTP запросах:

    

Эксплуатировать Shellshock можно следующими способами:

  • Использование в скриптах Bash.
    Переменные окружения могут быть встроены в скрипты Bash (файлы с расширением .sh). При выполнении скриптов Bash, интерпретатор выполнит значения, которые указаны в переменных окружения. 

  • Использование вредоносной веб-страницы.
    В веб-страницу встраивается переменная окружения. Когда пользователь посещает веб-страницу, переменная окружения будет отправлена на веб-сервер, который выполнит произвольную команду.

  • При отправке писем электронной почты.
    Создается письмо, содержащее переменную окружения с необходимым содержимым. Когда пользователь откроет сообщение, переменная окружения будет отправлена почтовому клиенту, который выполнит произвольную команду.

Уязвимость Shellshock может использоваться в системах, на которых запущены службы или приложения, позволяющие неавторизованным удаленным пользователям использовать переменные среды Bash. К таким приложениям относятся:

  • Веб-серверы, которые поддерживают выполнение CGI скриптов

  • Серверы с установленным OpenSSH и с включенным параметром ForceCommand

  • DHCP-клиенты

Проверяем сервер на возможность использования Shellshock Bash

Для того чтобы проверить уязвима ли ваша версия Bash, в терминале необходимо выполнить следующую команду:

    

Если в ответ вернулось слово vulnerable, то ваша версия Bash является уязвимой, и вы подвержены Shellshock Bash. Если же в ответ вернулось сообщение this is a test, то ваша версия Bash уже содержит в себе необходимые исправления, и уязвимость Shellshock Bash вам не угрожает.

Далее мы рассмотрим всевозможные способы по устранению и недопущению уязвимости Shellshock Bash.

Методы защиты от Shellshock Bash

Для того чтобы защитить ваш сервер от уязвимости Shellshock Bash, необходимо предпринять следующие шаги:

  1. Обновить версию bash

Самый простой и быстрый способ решения проблемы с Shellshock Bash. Для этого необходимо выполнить одну из следующих команд в зависимости от используемого дистрибутива Linux.

Для дистрибутивов на основе Debian (Ubuntu, Linux Mint, Xubuntu и других) команда будет следующей:

    

После того как ваша версия bash была успешно обновлена, необходимо воспроизвести уязвимость еще раз. Подробные действия указаны в предыдущей главе «Проверяем сервер на возможность использования Shellshock Bash».

  1. Запретить пользователям вход на сервер

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

При создании пользователя при помощи утилиты useradd (где web — имя создаваемого пользователя):

    

При создании пользователя при помощи утилиты adduser (где web — имя создаваемого пользователя):

    

Для отключения входа для уже существующего пользователя можно воспользоваться утилитой chsh (где web — имя ранее созданного пользователя):

    

Стоит отметить, что программа chsh присутствует не во всех дистрибутивах Linux.

Для отключения входа для уже существующего пользователя при помощи утилиты usermod (где web — имя ранее созданного пользователя):

    

Заключение

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

708
5 минут чтения
Средний рейтинг статьи: 5
Хотите внести свой вклад?
Участвуйте в нашей контент-программе за
вознаграждение или запросите нужную вам инструкцию
img-server