今回は、多くのユーザーを持ち、それだけに多くの脆弱性が発見されているCMS「WordPress」とそのプラグインの脆弱性を検証してみる。
前回の記事「CMSに残る反射型XSSを使ったセッションハイジャック」でも紹介したとおり、CMS(Contents Management System)の脆弱性を狙った攻撃が後を絶たないようだ。
中でも話題となっていたのが、共用レンタルサーバを狙った広範囲の書き換え攻撃だ。「共用」という性質もあって、同一のサーバを使用していた複数のユーザーのデータが横断的に書き換えられた点が、2010年代には逆に新しい。この事件で、忘れかけていた昔の設定方法を思い出した方も多かったのではなかろうか。どうやらこの事件を起こしたのは愉快犯だったらしく、書き換え以外に大きな実害はなかったようだが、それでも今さらながら、共用レンタルサーバの怖さに気づいた人も多いかもしれない。
いずれにせよ、JPCERTやIPAからも注意喚起が出ている通り、日本のサイトが広く攻撃対象になっている。使用しているCMSのアップデート情報をこまめにチェックしてアップデートしていただきたい。
CMSの中には、WordPressのように、アップデートを通知してくれるものもある。とはいえログインしないとアップデート状況は分からない。更新していないCMSに毎日ログインするのはおっくうな作業かもしれないが、そこは我慢して、日々チェックとアップデートを欠かさないことが重要だ。
IPA:ウェブサイト改ざん等のインシデントに対する注意喚起〜ウェブサイト改ざんが急激に増えています〜
http://www.ipa.go.jp/security/topics/alert20130906.html
JPCERT/CC:ウェブサイト改ざん等のインシデントに対する注意喚起〜ウェブサイト改ざんが急激に増えています〜(PDF)
https://www.jpcert.or.jp/press/2013/PR20130906-alert.pdf
さて、今回はWordPressの古いプラグインの脆弱性を突いて、第三者がファイルをダウンロードしたりアップロードしたりできることを検証してみたいと思う。
WordPressはおそらく、世界で最も使われているオープンソースのブログツールだろう。CMSとして利用している人や会社も多い。
現在のバージョンは3.6.1(2013年10月現在)。最初のリリースは2003年なので、公開されてからもう10年になるが、その間、頻繁にアップデートが繰り返されており、本体の脆弱性は他のCMSに比べると少なくなっているように思われる。
WordPressの特徴として、誰でもプラグインを公開でき、このプラグインを使って好きな機能を追加できることが挙げられる。WordPressの標準機能になくとも、プラグインを追加すればやりたいことができるのだ。
しかもユーザーが多いだけあって、多数のプラグインが日々公開されている。WordPressに登録されているプラグインならば、WordPressのダッシュボードから簡単に導入できるようになっている。
しかしながら一方で、このプラグインには多数の脆弱性が見つかり、情報も公開されている。本体はそれなりに安心だが、プラグインの方には細心の注意が必要なのだ。そこで今回はその危険性を検証すべく、このプラグインの脆弱性を突いて侵入を試してみることにする。
なお、脆弱性が公開されたプラグインについてもアップデートが行われ、これまた自動的にダッシュボードから更新できるようになっているので、日々ダッシュボードを見ていれば安心だ。
プラグインの脆弱性を突く前に、まずWordPressをインストールしないと始まらない。早速インストールすることにする。環境は前回に引き続き、Ubuntuにインストールしたlamppだ。導入については第1回の記事をご覧いただきたい。
http://ja.wordpress.com/
から日本語版をダウンロードする(英語版でもかまわない)。ここではZIPをダウンロードした。適当な場所で解凍して、/opt/lampp/htdocs/に移動させる。
$ sudo unzip wordpress-3.6.1-ja.zip $ sudo mv /home/user/ダウンロード/wordpress /opt/lampp/htdocs/wordpress
そして、Webサーバを動かしているnobodyユーザーから書き込みできるようにディレクトリ設定を変更する。「誰でもアクセス可能」という非常にざっくりした設定なので、実運用の場合はもう少し安全面を考えて設定しよう。
$sudo chmod -R 777 /opt/lampp/htdocs/wordpress
そしてlamppを起動しておこう。
$ sudo /opt/lampp/lampp start
次に、WordPressに使用するデータベースの設定を行う。rootユーザーを使ってもいいが、WordPress用のユーザーとデータベースを作成しておくことにする。
データベースの設定は、これまでどおりphpmyadminから行う。
メニューの「ユーザ」をクリックし、「ユーザを追加する」をクリックすると、「ユーザを追加する」ダイアログが開く。そこに好きなユーザー名とパスワード、ホストは「ローカル」を入力し、「ユーザ専用データベース」で「同名のデータベースを作成してすべての特権を与える」を選び、「ユーザを追加する」ボタンをクリックする。
Copyright © ITmedia, Inc. All Rights Reserved.