
Эксплойт на Python для CVE-2019-6340, нацеленный на Drupal 8 RESTful API, для достижения удаленного выполнения кода с помощью специально сформированных HTTP-запросов. Включает настройку Docker и полезную нагрузку для внедрения команд.
CVE 2019-6340
Сайт, на котором включен модуль RESTful API Services ядра Drupal 8 ,позволяет пользователю отправлять GET, PATCH или POST запросы на сервер.
(GET-запроса достаточно для запуска уязвимости выполнения кода ,даже если метод PATCH отключен)
На сайте включен любой другой модуль веб-сервисов ,например JSON-API в Drupal 8 или REST services в Drupal 7.
ТРЕБОВАНИЯ ДЛЯ POC
DOCKER.IO
DRUPAL 8.6.9
SQL 5.7
docker run -d --name mysqldb -e MYSQL_ROOT_PASSWORD=password mysql:5.7
docker run -d --name drupal --link mysqldb -p 8090:80 -e MY_SQL_USER:root -e MY_SQL_PASSWORD:password drupal:8.6.9
команда запуска эксплойта
python3 exp.py http://Ip_of_drupal_container:port_assigned(if)// "command_to_execuite"
пример:- python3 exp.py http://127.0.0.1:8090/ "hostname -I"
АНАЛИЗ ЭКСПЛОЙТА
Guzzle — это PHP HTTP-клиент , упрощающий отправку HTTP-запросов и интеграцию с веб-сервисами. Он используется в эксплойте для отправки вредоносных запросов на сайты на Drupal. Если проанализировать скрипт Guzzle внутри кода эксплойта (exp.py) , можно обнаружить, что строка "command" заменяется командой , переданной во время выполнения (например hostname -I).

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

Эксплойт не будет обращаться к одному узлу дважды. Предположим , вы добавили 5 узлов ,так что после запуска эксплойта 5 раз вам нужно обновить узлы: просто перейдите в раздел "Содержимое" (Content) и примените любое действие к узлам.
ЗАПРОС И ОТВЕТ

