
# Drupalgeddon3 RCE-эксплойт-лаборатория с уязвимой средой на базе Docker и интеграцией с Metasploit для практического обучения эксплуатации CVE-2018-7602.
Уязвимость удалённого выполнения кода существует в нескольких подсистемах Drupal 7.x и 8.x. Она потенциально позволяет злоумышленникам использовать множество векторов атаки на сайт на Drupal, что может привести к компрометации сайта. Эта уязвимость связана с ядром Drupal — критическая важность — удалённое выполнение кода — SA-CORE-2018-002. И SA-CORE-2018-002, и эта уязвимость эксплуатируются в реальных условиях. --- MITRE
Из-за некоторых сетевых ограничений в Docker для Mac (https://docs.docker.com/docker-for-mac/networking/#use-cases-and-workarounds) и Windows, приведённый ниже код следует выполнять на машине с Linux, где установлены docker и docker-compose.
Здесь у нас двухэтапная процедура: сначала машина с Drupal уязвимой версии 7.57, а затем атакующая машина с модифицированным эксплойтом, который позволяет нам продемонстрировать потенциальную опасность уязвимости.
# Supposing that you are placed inside the directory CVE-2018-7602
cd vulnerable_machine
docker-compose up -d
cd ..
Предупреждение Перед запуском команды убедитесь, что порт 80 не занят другим программным обеспечением.
Атакующая машина: Здесь мы создадим docker-образ Metasploit, содержащий модифицированный эксплойт (drupal_drupalgeddon3_commander), который будет использоваться далее. Для этого выполним:
cd attacking_machine
docker-compose run --rm --service-ports -e MSF_UID=$(id -u) -e MSF_GID=$(id -g) ms
Если у вас возникнут проблемы при выполнении приведённых ниже команд, отправьте письмо на [email protected] с приложенным журналом выполнения, и он с радостью поможет вам решить проблему.
Теперь, когда Drupal запущен, нам нужно настроить его и создать некоторый контент. Для этого выполните следующие шаги:


# Overview
We will try to use the vulnerability to execute commands like ls or whoami
to show that it is possible to execute commands remotely.
Теперь, когда уязвимый экземпляр Drupal запущен на localhost, следующим шагом нужно начать использовать экземпляр Metasploit, созданный на этапе настройки окружения.
В Metasploit нам необходимо перезагрузить базу данных эксплойтов с помощью команды:
reload_all
После этого нам становится доступен нужный эксплойт. Чтобы подготовить необходимую для эксплойта информацию, нам понадобятся сессионные cookie какого-либо пользователя, вошедшего на сайт.
Чтобы получить их простым способом, предположим, что вы всё ещё вошли в систему. Перейдите в инструменты разработчика, посмотрите хранилище cookie и сохраните его на потом. В итоге вы должны получить что-то вроде
#<session_name>=<session_token>
SESS49960de5880e8c687434170f6476605b=DGHZKHWaNC51nrVQHEsTD0_PS68EeNyvGjdzk1SVmss
Пример получения cookie с помощью google chrome

Теперь начинаем загружать эксплойт в Metasploit. Для этого выполните следующие команды:
use exploits/unix/webapp/drupal_drupalgeddon3_commander
show options
Как видите, нам нужны некоторые параметры. Настраиваем параметры следующим образом
set RHOSTS localhost
set DRUPAL_SESSION <session_name>=<session_token>
После этого можно выполнить
exploit
Мы получим пользователя, от имени которого в данный момент работает веб-сервер. В данном случае это www-data, потому что команда по умолчанию — whoami. Также вы увидите некоторую дополнительную информацию в формате JSON, которая для нас не важна.
Итоговый результат эксплуатации выглядит так:

Конец эксперимента: Если вы успешно выполнили весь эксперимент, то это конец. Поздравляем.
Если вы хотите продолжить эксперименты, вы можете изменить значение команды с помощью инструкции set. Или изменить ruby-скрипт, используемый Metasploit.