Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
drupalgeddon2-cli — CLI-переписывание PoC для Drupalgeddon2 (CVE-2018-7600) — для авторизованного тестирования/обучения | Kitploit
Инструменты/GitHubGitHub/nayem-m/drupalgeddon2-cli
Генерация полезной нагрузкиЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеОбучение и ОбразованиеЛаборатории и Практика
GitHubnayem-m/drupalgeddon2-cli

drupalgeddon2-cli

CLI-переписывание PoC для Drupalgeddon2 (CVE-2018-7600) — для авторизованного тестирования/обучения

Репозиторий
2 месяцев назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

drupalgeddon2-cli

Командная строка для перезаписи доказательства концепции Drupalgeddon2 (CVE-2018-7600), создана в качестве учебного упражнения при прохождении модуля Hack The Box Academy Attacking Common Applications.

[!WARNING] Только для авторизованного тестирования безопасности и обучения. Запуск этого инструмента против систем, которыми вы не владеете или на которые не имеете явного письменного разрешения на тестирование, является незаконным в большинстве юрисдикций. См. Юридическое и ответственное использование.

[!NOTE] Реализация написана с помощью ИИ. См. Примечание об авторстве.


История создания — почему я это сделал

Drupal — одно из «распространённых приложений», рассматриваемых в модуле HTB Academy Attacking Common Applications, и CVE-2018-7600 («Drupalgeddon2») является каноническим примером неаутентифицированного RCE для него. Вместо того чтобы скопировать одноразовый скрипт и двигаться дальше, я хотел реально понять инъекцию Form API, благодаря которой работает эта уязвимость, — поэтому я переписал публичный PoC с нуля в качестве учебного упражнения.

Широко цитируемый оригинал a2u/CVE-2018-7600 от Виталия Рудных отлично подходит для демонстрации уязвимости, но он предполагает редактирование полезной нагрузки на месте при каждом запуске. В лабораторном/CTF-рабочем процессе — повторные запуски против разных целей, желание получить повторяемый плацдарм — это становится утомительным. Эта версия превращает его в полноценный инструмент CLI:

  • цель и команда передаются в качестве аргументов; не нужно редактировать исходный код при каждом запуске
  • он автоматически размещает крошечную PHP-оболочку (уязвимый сервер сам записывает файл), обеспечивая стабильный, многократно используемый плацдарм
  • вы можете выполнить одну команду, войти в интерактивную псевдооболочку или просто развернуть оболочку и уйти
  • имя файла оболочки и параметр команды рандомизируются при каждом запуске, чтобы повторный запуск не приводил к коллизии и вы не оставляли предсказуемый cmd= за собой

Он намеренно ограничен известной, давно исправленной уязвимостью (обнародована в 2018 году). Целью было понять технику и создать чистую, документированную эталонную реализацию, а не новые наступательные возможности.

Примечание об авторстве

Код в этом репозитории был написан с помощью ИИ (Anthropic's Claude), пока я проходил модуль HTB. Я установил цели дизайна и требования — эргономичность CLI, автоматическое развёртывание веб-оболочки, интерактивный режим, рандомизированные имя оболочки и параметр, — а затем я проверил и протестировал результат. Я раскрываю это, потому что это честно, и потому что ценность здесь заключается в понимании и инженерных решениях, а не в авторстве каждой строки.

Что он делает

  1. Использует инъекцию Form API из CVE-2018-7600, чтобы разместить небольшую PHP-веб-оболочку на цели. Уязвимый сервер сам декодирует и записывает файл, что обходит проблемы с экранированием и кавычками при инъекции команды.
  2. Позволяет выполнять команды через эту оболочку с помощью --cmd или войти в интерактивную псевдооболочку с помощью --shell.
  3. Перед сообщением об успехе проверяет, что оболочка действительно установилась и выполняется (он отправляет случайный токен и проверяет его возврат).

Затронутые версии

CVE-2018-7600 затрагивает:

  • Drupal 7.x до 7.58
  • Drupal 8.x до 8.5.1 (также 8.3.x < 8.3.9 и 8.4.x < 8.4.6)

Данная реализация нацелена на вектор Drupal 8 Form API (AJAX-конечная точка user/register). Drupal 7 эксплуатируется через другую конечную точку/полезную нагрузку и не рассматривается здесь.

Исправленные версии (7.58 / 8.5.1 и новее) не подвержены уязвимости.

Требования

  • Python 3.7+
  • requests
root@kitploit:~
pip install requests

Использование

root@kitploit:~
# однократная команда
python3 drupalgeddon2.py -u http://target/ -c id

# интерактивная псевдооболочка
python3 drupalgeddon2.py -u http://target/ --shell

# просто разместить оболочку, ничего не выполнять
python3 drupalgeddon2.py -u http://target/ --deploy-only

# маршрутизация через Burp, игнорировать самоподписанный сертификат прокси
python3 drupalgeddon2.py -u http://target/ -c id --proxy http://127.0.0.1:8080 -k

Как это работает

CVE-2018-7600 — это ошибка санитизации ввода в Form API Drupal. Drupal представляет формы как вложенные рендерные массивы, и ключи массива, начинающиеся с #, трактуются как специальные свойства рендеринга, а не пользовательские данные. Исправление (SA-CORE-2018-002) добавило санитизацию для удаления этих ключей с префиксом # из пользовательского ввода.

До исправления неаутентифицированный злоумышленник мог внедрить свойства рендеринга в элемент формы, обрабатываемый AJAX-обработчиком Drupal. Отправка свойств, таких как:

  • #post_render — список вызываемых функций, которые Drupal вызывает после рендеринга, и
  • #markup — аргумент, передаваемый этим функциям

в элемент mail формы регистрации пользователя заставляет Drupal вызывать произвольную PHP-функцию (здесь exec) с контролируемым злоумышленником вводом на этапе рендеринга — т.е. удалённое выполнение кода без аутентификации.

Этот PoC использует этот примитив для base64-кодирования однострочной PHP-оболочки локально, заставляет сервер декодировать её в файл в корне веб-сервера, а затем взаимодействует с этим файлом через обычные GET-запросы.

Обнаружение и устранение

Если вы на стороне защиты:

Устранение

  • Обновитесь до Drupal 7.58 / 8.5.1 или новее (примените SA-CORE-2018-002). Это единственное реальное исправление.
  • Если немедленное обновление невозможно, команда безопасности Drupal опубликовала патч для смягчения на момент раскрытия — но обновление настоятельно рекомендуется.

Идеи для обнаружения

  • Проверяйте тела POST-запросов к формам/AJAX-конечным точкам на наличие ключей рендер-массива: #post_render, #markup, #type, #lazy_builder и т.д. Легитимные отправки форм не содержат этих ключей.
  • Помечайте запросы к …/user/register?element_parents=…&_wrapper_format=drupal_ajax с подозрительными параметрами.
  • Коррелируйте POST к AJAX-конечной точке формы с последующим GET к вновь созданному .php-файлу в корне веб-сервера.
  • Следите за неожиданным созданием файлов в корне Drupal и за короткими PHP-файлами с одним параметром (system($_GET[...]) оболочки).
  • Эти поведения легко кодировать как сигнатуры Suricata/Snort или правила Sigma для журналов веб-сервера.

Благодарности

  • Оригинальный PoC и основная техника: Виталий Рудных — a2u/CVE-2018-7600
  • Раскрытие уязвимости: Drupal Security Team — SA-CORE-2018-002
  • Глубокие разборы техники, которые повлияли на эту перезапись: исследовательские отчёты Check Point и Ambionics по Drupalgeddon2
  • Эта CLI-перезапись: я, с помощью ИИ (см. Примечание об авторстве)

Юридическое и ответственное использование

Этот инструмент опубликован для образования и авторизованного тестирования безопасности — ваших собственных лабораторных сред, целей HTB/CTF или систем, на которые у вас есть явное письменное разрешение на оценку. Несанкционированный доступ к компьютерным системам является преступлением по таким законам, как Закон о неправомерном использовании компьютеров Великобритании 1990 года, Закон о компьютерном мошенничестве и злоупотреблениях США и их эквиваленты в других странах. Вы несёте полную ответственность за то, как вы его используете. Автор не несёт ответственности за неправомерное использование или любой причинённый ущерб.

Лицензия

MIT

Скачать инструмент
ФлагОписание
-u, --url(обязательно) Базовый URL цели, например, http://target/
-c, --cmdОднократная команда для выполнения на цели
--shellВойти в интерактивную псевдооболочку
--deploy-onlyТолько разместить веб-оболочку, ничего не выполнять
--shell-nameИмя файла размещаемой оболочки (по умолчанию случайное .php)
--paramИмя GET-параметра для оболочки (по умолчанию случайный md5)
--proxyURL прокси, например, http://127.0.0.1:8080
-k, --insecureОтключить проверку TLS (для самоподписанных сертификатов прокси)
--timeoutТаймаут на запрос в секундах (по умолчанию 15)