このブログは、3月までN高等学校に潜んでいた株式会社Armorisの社員が書いています。
あるもりすぶろぐの内容は個人の意見です。
File Manager Plugin Zero-Day
今週の Armoris日記は WordPress Plugin の一つで人気の高い File Manager に存在する脆弱性について検証します。
この脆弱性は 2020/09/01 に情報が出た新しいものになります。
ここ数日で話題になっている本脆弱性ですが、簡単に言えば認証されていない第三者が悪意のあるファイルをアップロードし実行することで、サイト上で任意のコードを実行する可能があるというものです。
また、この脆弱性を利用してアクセスできるのはwp-content/plugins/wp-file-manager/lib/files/
以下のみです。
詳しい脆弱性情報については以下を参照してください。
Wordfence
JPCERT/CC
2020/09/03時点で WPScan WordPress Vulnerability Database で PoC が公開されていないため、PoC については記載しません。
今回検証するのは WordPressの File Managerプラグイン です。
検証環境
以下は今回検証するにあたって用意した環境になります。
WordPress は Vagrant と Ansible を使用して環境構築を行なっています。
Name | Version |
---|---|
WordPress | 5.5.1 |
File Manager | 6.0 |
Server情報
プラグインインストールと準備
WordPress のインストールが完了したらプラグインのインストールを行います。
今回はバージョン 6.0 をプラグイン公式サイトからダウンロードして使用します。
$ wget https://downloads.wordpress.org/plugin/wp-file-manager.6.0.zip --2020-09-02 20:01:42-- https://downloads.wordpress.org/plugin/wp-file-manager.6.0.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: 3675292 (3.5M) [application/octet-stream] Saving to: 'wp-file-manager.6.0.zip' wp-file-manager.6.0.zip 100%[=============================================================================>] 3.50M 278KB/s in 15s 2020-09-02 20:01:58 (247 KB/s) - 'wp-file-manager.6.0.zip' saved [3675292/3675292] $ ls wp-file-manager.6.0.zip
プラグインがダウンロードできたら次にプラグインの zip ファイルを展開します。
今回使用するプラグインは二重に zip 化されていたため2回解凍します。
$ sudo unzip wp-file-manager.6.0.zip Archive: wp-file-manager.6.0.zip creating: wp-file-manager/ extracting: wp-file-manager/wp-file-manager-6.O.zip $ cd wp-file-manager wp-file-manager$ sudo unzip wp-file-manager-6.O.zip ~~~~~~~~~~~~~~~~ inflating: wp-file-manager/languages/wp-file-manager-gd.mo inflating: wp-file-manager/languages/wp-file-manager-hi_IN.po inflating: wp-file-manager/languages/wp-file-manager-fi.mo wp-file-manager$ ls wp-file-manager wp-file-manager-6.O.zip
プラグインファイルの解凍が完了したら WordPress のプラグインディレクトリに移動させます。
wp-file-manager$ sudo cp -r wp-file-manager /var/www/wordpress/wp-content/plugins/
この時ディレクトリの所有者とグループがwww-data
になっている事を確認します。
root
などになっている場合は所有者とグループを変更します。
$ cd /var/www/wordpress/wp-content/plugins/ /var/www/wordpress/wp-content/plugins$ ls -la total 24 drwxr-xr-x 4 nobody nogroup 4096 Sep 2 20:09 . drwxr-xr-x 4 nobody nogroup 4096 Sep 1 11:54 .. drwxr-xr-x 4 nobody nogroup 4096 Sep 1 11:54 akismet -rw-r--r-- 1 nobody nogroup 2578 Mar 18 2019 hello.php -rw-r--r-- 1 nobody nogroup 28 Jun 5 2014 index.php drwxr-xr-x 9 root root 4096 Sep 2 20:09 wp-file-manager /var/www/wordpress/wp-content/plugins$ sudo chown -hR www-data:www-data wp-file-manager/ /var/www/wordpress/wp-content/plugins$ ls -la total 24 drwxr-xr-x 4 nobody nogroup 4096 Sep 2 20:09 . drwxr-xr-x 4 nobody nogroup 4096 Sep 1 11:54 .. drwxr-xr-x 4 nobody nogroup 4096 Sep 1 11:54 akismet -rw-r--r-- 1 nobody nogroup 2578 Mar 18 2019 hello.php -rw-r--r-- 1 nobody nogroup 28 Jun 5 2014 index.php drwxr-xr-x 9 www-data www-data 4096 Sep 2 20:09 wp-file-manager
プラグインディレクトリの所有者とグループがwww-data
になっている事を確認したら WordPress にアクセスしてプラグインを有効化します。
実際に検証してみる
まずは脆弱性を利用してコマンドを実行するためのトリガーとなるファイルをアップロードします。
次にアップロードしたファイルをトリガーにしてmkdir hoge
を実行してls
コマンドで作成されたかを確認します。
画像のように、実際に hoge ディレクトリが作成されls
コマンドで確認することができました。
ブラウザからもアップロードしたファイルをトリガーにcat /etc/passwd
コマンドの実行が可能であり攻撃者は簡単に脆弱性を利用できることがわかります。
最後に
今回検証した脆弱性はCVSS Score: 10.00 (Critical)
が割り当てられており危険度が高いです。攻撃者が干渉できるのは特定ディレクトリのみですが、ここに何らかのファイルをアップロードしていた場合攻撃者によって削除されたり、閲覧される可能性もあり非常に危険だと感じました。
また、今回のプラグインが導入されているサイトはGoogle検索で簡単に見つけることができ、現時点で PoC がいくつか出回っているため、実際に脆弱性を利用した攻撃が行われています。