このブログは、3月までN高等学校に潜んでいた株式会社Armorisの社員が書いています。
あるもりすぶろぐの内容は個人の意見です。
CVE-2020-24389 の検証をしてみる
今週の Armoris日記は久しぶりの検証編になります。
脆弱性の検証は自身で管理するサーバー以外にはしないでください。
今回検証するのは 2020/09/21 に公開された CVE-2020-24389 の脆弱性になります。
この脆弱性は一部のファイル拡張子が無効化されていなかったため、任意の PHP コードをアップロードすることができるようになるというものです。
つまり自作のプログラムファイルがサイト管理者に無断でアップロードされてしまいます。
2020/10/01 時点で既にいくつか PoC に関する情報が出ていますが、WPScan に公開されていないため PoC に関する説明は行いません。
脆弱性情報 : WPScan WordPress Vulnerability Database
該当プラグイン : Drag and Drop Multiple File Upload – Contact Form 7
関連プラグイン : Contact Form 7
影響を受けるバージョン : < 1.3.5.5
検証環境
検証に使用した環境と各種バージョンは以下のとおりです。
今回の脆弱性は Drag and Drop Multiple File Upload – Contact Form 7 というプラグインに存在するものですが、これは Contact Form 7 というプラグインに機能を追加するもののため、検証には両方をインストールする必要があります。
Name | Version |
---|---|
Ubuntu Server | 20.04 |
WordPress | 5.5.1 |
Drag and Drop Multiple File Upload – Contact Form 7 | 1.3.5.1 |
Contact Form 7 | 5.2.1 |
プラグインインストール・準備
まずは必要なプラグインの zip をダウンロードします。
$ wget https://downloads.wordpress.org/plugin/drag-and-drop-multiple-file-upload-contact-form-7.1.3.5.1.zip && wget https://downloads.wordpress.org/plugin/contact-form-7.5.2.1.zip --2020-10-01 04:29:37-- https://downloads.wordpress.org/plugin/drag-and-drop-multiple-file-upload-contact-form-7.1.3.5.1.zip Resolving downloads.wordpress.org (downloads.wordpress.org)... 198.143.164.250 Connecting to downloads.wordpress.org (downloads.wordpress.org)|198.143.164.250|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 35452 (35K) [application/octet-stream] Saving to: ‘drag-and-drop-multiple-file-upload-contact-form-7.1.3.5.1.zip’ drag-and-drop-multiple-file-upload-cont 100%[=============================================================================>] 34.62K --.-KB/s in 0.07s 2020-10-01 04:48:00 (529 KB/s) - ‘drag-and-drop-multiple-file-upload-contact-form-7.1.3.5.1.zip’ saved [35452/35452] --2020-10-01 04:29:43-- https://downloads.wordpress.org/plugin/contact-form-7.5.2.1.zip Resolving downloads.wordpress.org (downloads.wordpress.org)... 198.143.164.250 Connecting to downloads.wordpress.org (downloads.wordpress.org)|198.143.164.250|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 185814 (181K) [application/octet-stream] Saving to: ‘contact-form-7.5.2.1.zip’ contact-form-7.5.2.1.zip 100%[=============================================================================>] 181.46K 198KB/s in 0.9s 2020-10-01 04:29:45 (198 KB/s) - ‘contact-form-7.5.2.1.zip’ saved [185814/185814] $ ls contact-form-7.5.2.1.zip drag-and-drop-multiple-file-upload-contact-form-7.1.3.5.1.zip
zip のダウンロードが完了したら zip を解凍し、プラグインディレクトリに配置します。
$ sudo unzip contact-form-7.5.2.1.zip && sudo unzip drag-and-drop-multiple-file-upload-contact-form-7.1.3.5.1.zip ~~~~~~~~~~~~~~~~ inflating: drag-and-drop-multiple-file-upload-contact-form-7/languages/dnd-upload-cf7-ru_RU.mo inflating: drag-and-drop-multiple-file-upload-contact-form-7/languages/dnd-upload-cf7-ru_RU.po inflating: drag-and-drop-multiple-file-upload-contact-form-7/readme.txt inflating: drag-and-drop-multiple-file-upload-contact-form-7/uninstall.php $ sudo cp -r drag-and-drop-multiple-file-upload-contact-form-7 /var/www/wordpress/wp-content/plugins/ && sudo cp -r contact-form-7 /var/www/wordpress/wp-content/plugins/ $ ls /var/www/wordpress/wp-content/plugins/ akismet contact-form-7 drag-and-drop-multiple-file-upload-contact-form-7 hello.php index.php
プラグインファイルを配置したら /wp-content/uploads/wp_dndcf7_uploads/wpcf7-files
というディレクトリを作成しておきます。
次に /var/www/wordpress/
ディレクトリ以下の所有者とグループがwww-dataになっている事を確認します。
rootなどになっている場合は所有者とグループを変更します。
$ ls -l total 8 drwxr-xr-x 2 root root 4096 Sep 28 08:59 html drwxr-xr-x 5 www-data www-data 4096 Sep 30 09:04 wordpress
最後に WordPressのサイトを開いてプラグインを有効化すれば準備は完了です。
PoC を実際に実行してみる
準備が完了したら実際に PoC を実行します。
今回は以下の PHP コードをアップロードしてみます。
<?php phpinfo(); ?>
以下の画像は PoC 実行時の結果です。
以下は実際に phpinfo
の実行が確認されています。
最後に
今回検証した脆弱性は攻撃が非常に簡単なため、実際に攻撃事例が報告されています。
脆弱性の対象バージョンは比較的新しいもののため、導入されている方はすぐにアップグレードすることをお勧めします。
また、プラグインがファイルをアップロードするディレクトリ に不審なファイルがないかを確認してみるのもいいと思います。
自分が管理するサーバー以外では絶対に試さないでください。
また、検証は自己責任で行ってください。