HappyNote3966’s blog

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

CVE-2014-3704の検証


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

CVE-2014-3704について

cve.mitre.org

Drupal 7.x系の7.31から前のバージョンにSQLインジェクション脆弱性がある。

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

www.exploit-db.com

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

github.com

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

インストール

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

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

f:id:HappyNote3966:20180725214224p:plain

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

f:id:HappyNote3966:20180725214356p:plain

f:id:HappyNote3966:20180725214434p:plain

ここでは、データベースの名前やパスワードなどを聞かれる。データベースの名前はdrupal、ユーザ名はroot、パスワードは自身が設定したものを入力する。 (ここで続行しても、反応がない場合がある。その場合はF5で更新するとうまく行くはず)

f:id:HappyNote3966:20180725214620p:plain

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

f:id:HappyNote3966:20180725215030p:plain

インストールが完了し、リンクをクリックすることでDrupalのページに飛ぶことができる。

f:id:HappyNote3966:20180725215135p:plain

検証

まずはログアウトを行う。その後、ユーザ名happynote3966、パスワードもhappynote3966でログイン試行をする。

f:id:HappyNote3966:20180725215240p:plain

インストール作業の際にはアカウントを作成していないため、ログインが弾かれる。

f:id:HappyNote3966:20180725215314p:plain

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

$ python 34992.py -t http://localhost/drupal -u happynote3966 -p happynote3966

これで、ユーザ名happynote3966、パスワードhappynote3966`でアカウントの作成を行う。

f:id:HappyNote3966:20180725215542p:plain

実行後、再度そのユーザ名とパスワードでログインを行う。

f:id:HappyNote3966:20180725215554p:plain

結果としてログインに成功している。

f:id:HappyNote3966:20180725215617p:plain

感想

まだソースコードのどの部分が理由で脆弱性が存在するのかまで理解できていないが、いずれ理解していきたい。