HappyNote3966’s blog

備忘録、作業記録的なことを書きます。低レベル注意。ご指摘等ございましたらやんわりとお願いします(´;ω;`)

CVE-2018-7600の検証

Web系の脆弱性について勉強していきたいと思い、いくつか検証してみた。この記事はそのうちの2つ目。

CVE-2018-7600について

cve.mitre.org

Drupal 8.x系の8.5.1より前のバージョン、加えて7.x系の7.58よりも前のバージョンにRCEの脆弱性がある。

今回検証するのはこのコード。

www.exploit-db.com

検証コードとDrupal8.5.0のソースをまとめたリポジトリを作成した。以降の検証はこのリポジトリ内にあるスクリプト等でインストール作業を自動化している。

github.com

検証環境は、Virtualbox上で動作するVM(Ubuntu 16.04 64bit)。予めgitがインストールされているものとする。

インストール

$ git clone https://github.com/happynote3966/CVE-2018-7600.git
$ cd CVE-2018-7600
$ sudo ./install.sh
# (途中でMySQLのrootパスワードの設定を求められる)
$ sudo ./install.2sh
# (ここでも途中でMySQLのrootパスワードの入力が2回求められる。)

ここまで実行したら、次はInstallation Script(Webコンソール)でDrupalをインストールする。 VM内のブラウザでhttp://localhost/drupal/core/install.phpにアクセスすると、インストール画面が現れる。

f:id:HappyNote3966:20180829153233p:plain

デフォルトのまま次へ進めていく。

f:id:HappyNote3966:20180829153341p:plain

f:id:HappyNote3966:20180829153412p:plain

ここでは、データベースの名前やパスワードなどを聞かれる。データベースの名前はdrupal、ユーザ名はroot、パスワードは自身が設定したものを入力する。

f:id:HappyNote3966:20180829153422p:plain

サイトの設定をする。管理者はdrupalというユーザ名で、パスワードはpasswordとする。

f:id:HappyNote3966:20180829153435p:plain

f:id:HappyNote3966:20180829153455p:plain

インストールが完了し、そのままDrupalのページに飛ぶことができる。

f:id:HappyNote3966:20180829153543p:plain

検証

まずは念のためにログアウトしておく。

f:id:HappyNote3966:20180829153620p:plain

その後、rubyで検証コードを以下のように実行する。

$ ruby ./drupalgeddon2_update.rb http://localhost/drupal

このPoCは今回構築した環境に合わせてオリジナルのPoCから少しだけ修正したものを使っている。 実行した後、drupalgeddon2>>というプロンプトが表示されるので、lsコマンドを入力してみる。

f:id:HappyNote3966:20180829153915p:plain

すると、lsを実行した結果が出てくる。他にも、whoamiコマンドを入力してみる。

f:id:HappyNote3966:20180829154121p:plain

任意のコマンドが実行できるRCEが存在していることが分かる。

感想

自分が見つけたわけでもなく、人のPoCを動かしてやってみるだけになったが、それでもRCEができているとすごくワクワクする。いずれこんな脆弱性を見つけてCVEを取得したい。