
Реализация на Rust эксплойта CVE-2018-7600, нацеленная на уязвимые установки Drupal 7 (<= 7.57)
Реализация эксплойта CVE-2018-7600 на Rust, нацеленная на уязвимые установки Drupal 7 (<= 7.57). Этот CLI воспроизводит следующий поток PoC: он отравляет кэшируемую рендерируемую форму через путь user/password, извлекает form_build_id, а затем активирует кэшированную полезную нагрузку через конечную точку file/ajax для достижения удаленного выполнения кода посредством вызова PHP-функции.
CVE-2018-7600 — это уязвимость удаленного выполнения кода, затрагивающая Drupal 7 (а также Drupal 8 в ином контексте). В Drupal 7 проблема возникает из-за недостаточной санитизации при кэшировании и последующем рендеринге некоторых рендерируемых массивов. Внедряя особым образом сформированные метаданные рендеринга в конечную точку, которая кэшируется, злоумышленник может вызвать выполнение произвольных PHP-функций при последующем рендеринге или запросе кэшированных данных.
#post_render является произвольной PHP-функцией (например, passthru).?q=user/password с параметрами сформированного рендерируемого массива, чтобы Drupal закэшировал отравленную форму.form_build_id PoC активирует полезную нагрузку, вызывая /file/ajax/name/#value/<form_build_id> с form_build_id в теле POST. Когда Drupal рендерит кэшированный элемент, обратный вызов #post_render выполняется с управляемой злоумышленником разметкой, что позволяет выполнять команды.Этот Rust CLI выполняет двухэтапную последовательность (отравление, затем активация) против целевого сайта Drupal 7, используя параметры запроса, анализирует HTML-ответ на наличие form_build_id, а затем активирует конечную точку file/ajax для выполнения функции, указанной злоумышленником.
Поскольку клиент отключает проверку сертификатов (в соответствии с оригинальным PoC, который передавал verify=False), инструмент будет работать с целями, использующими самоподписанные или иным образом недействительные TLS-сертификаты. Это поведение можно изменить в исходном коде, если вы предпочитаете требовать действительные сертификаты.
Базовое использование (команда по умолчанию — whoami, функция по умолчанию — passthru):
cargo run -- -u http://target.com/
Выполнение пользовательской команды и функции:
cargo run -- -u http://target.com/ -c "whoami" -f "passthru"
Использование HTTP/S-прокси (формат: http://127.0.0.1:8080/):
cargo run -- -u http://target.com/ -p http://127.0.0.1:8080/
Сводка параметров CLI:
-u, target: URL целевого сайта Drupal (например, http://target.com/).-c, --command: команда для выполнения на цели (по умолчанию: whoami).-f, --function: PHP-функция, используемая в качестве вектора атаки (по умолчанию: passthru).-p, --proxy: необязательный URL прокси-сервера для маршрутизации запросов.Пример полного потока:
user/password, внедрив обратный вызов #post_render и #markup, содержащий команду.form_build_id внутри form#user-pass.?q=file/ajax/name/#value/<form_build_id> с form_build_id, чтобы активировать рендеринг и выполнить команду.Этот инструмент предназначен только для образовательных целей и санкционированного тестирования на проникновение. Используйте ответственно и только на системах, которыми вы владеете или на тестирование которых у вас есть явное разрешение.