WordPress 4.7.0および4.7.1のREST APIの脆弱性

【wordpress】誰でもWordPressの攻撃方法は探すことができる?|徳丸勉強会レポート

投稿日: カテゴリー: セキュアコーディング
Pocket

誰でもWordpressの攻撃方法は探すことができる?|運用者必見、攻撃手法の探し方

世界で一番多く利用されているPHPベースのCMS宿命ですがWordpressの脆弱性情報は極めて多く存在します。

「Is it WordPress?」などでWordPressを使ったサイトかどんなプラグインを利用してるか,どんなテーマを利用してるかは判別サイト簡単にわかってしまいます。

さらにWPScan Vulnerability DatabaseExploits Database by Offensive Securityなどで公表されている脆弱性がある上、ソースはオープンソースなのでゼロデイの脆弱性を発見できてしまう可能性があるため、Wordpressを利用する以上常に攻撃の危険性を考えておくべきです。

上記の方法はいずれもTorでアクセスするようなダークウェブでも特定組織のつながりも必要がありません。

ただし、半面発見された脆弱性は明るみに出やすく、対応も早いので「即時対応の小回りの効く運用」ができるなら情報も多いWordpressは安全に運用すること自体は難しくはありません。逆にアップデートに対して様々な許可や確認を経ないと対応できないような企業や団体は、格好の標的とされる可能性は否定できません。

後述の徳丸勉強会レポートで話がありましたが、攻撃者はCMSを利用している企業にあたりをつけておきCMSの脆弱性の公表を待ち構えています。

※次の章の前にお伝えしますが、許可されている通常サービス以外のすべてのアクセスは良かれと思っていても違法行為です。すべて自分が許可を得た環境と言い切れる場合でのみ検証してみてください。

徳丸勉強会レポートWordPress|6万サイト15o万ページが被害を受けたあの脆弱性のデモ

wordpress security
wordpress security

3月9日、徳丸本で有名な徳丸浩さんの「徳丸浩とWordPressのセキュリティを学ぶ夜 」に行ってまいりました。

徳丸浩さん自身が代表を務める自社のサイトもWordpressにしているそうです。

自身のブログでWodpressの脆弱性の原因・危険性を詳細に解説していることも考えるとWordpressの脆弱性の対策への信頼できる行為だと思います。

さて90分2部構成となっており、第一部Wordpressサイトが侵入される代表的な原因とその対策、第二部企業のインシデント対応についてとなっておりました。第2回(3/16)、第3回(4/20)とまだまだ聴くチャンスがあるので19:00 – 21:30で時間の合わせられる人は直接聞いてみることをお勧めます。(しかもなんと無料です)
第一部をまとめると以下の2項目となります。

・Webサイトへの侵入経路認証の突破かソフトウェアの脆弱性の2つしかない

・Wordpress脆弱性デモンストレーション

それぞれ

・Webサイトへの侵入経路認証の突破かソフトウェアの脆弱性の2つしかない

認証の突破かソフトウェアの脆弱性の2つしかないと考えてよいということです。

そして認証突破から守るには

ユーザIDはWordpressの仕様上わかってしまうので
ユーザIDにこだわるより「パスワードを強固にすべき」

とのことでした。

「ユーザIDはWordpressの仕様上わかってしまう」の部分は詳しい説明はありませんでしたが非開発者を置いてきぼりにしない配慮だと思われますが一応説明しておくと以下のようにURLのあとにつけてアクセスするとuseridはわかってしまいます。

/?author=1

/?author=2

・・・

WordPressのユーザID取得の時点でWPScanのEnumerate usersモードが浮かんだ人もいるかもしれませんが結局同じことを行っています。

WPScanはRubyが動けば良いのでKali Linux上にこだわる必要がないので下記の実行例は環境に合わせ変更して下さい。

root@kali:~# wpscan --url "http://hogehoge.jp/"

ユーザIDにこだわるより「パスワードを強固にすべき」である以上、autocompliteをoffにはしない方が良いですね。

autocompliteをoffの無効化を率先したchromeの大元のGoogleとWordpressの相性は相変わらず抜群ですね。

・Wordpress脆弱性デモンストレーション

7つのデモを行っていましたが、やはり注目は「WordPress 4.7.1 の権限昇格脆弱性」と「NextGEN Gallery for WordPressのSQLインジェクション脆弱性」のデモに注目したいと思います。

2017年2月6日月曜日「WordPress 4.7.1 の権限昇格脆弱性について検証した」(IPAではWordPress には、REST API の処理に起因する脆弱性として発表)についてのデモを行っていました。
以下の動画より簡単にburp suiteを使ったデモで改竄されることを自身のブログ記事を交えて丁寧に説明されていました。

WordPress 4.7.のリリースノート(Introducing REST API Content Endpoints)で紹介されたに便利機能でした。

詳しくはPosts | REST API Handbook | WordPress Developer Resourcesに仕様が記載されています。

$ curl "http://hogehoge.jp/wp-json/wp/v2/posts?id=1x"

xの部分は任意の文字で認証回避されるので、あとは仕様に従ってPPAP・・・だったらまだかわいいですが、

コンテンツのすげ替えは見た目にも印象に残り、危険なサイトの印象から信頼回復するのはとても大変なことです。

ローカルプロキシでのマニュアルで実践した方が理解が高まりますが、実際の攻撃は以下の動画の方が近いと考えられます。

ただ、どうしてもWordPress 4.7.2にあげられない人は「Disable REST API」というプラグインでREST APIを無効化すればなんとかなります。
WordPress運用されている方ならご存知の通り、改ざんされた記事そのものはリビジョンから簡単にもとに戻すことが可能です。
(なるほどセキュリティの機能としてもつかえるんですね)

WordPress本体よりも危険|Wordpressのプラグインの脆弱性情報は必ずウォッチしましょう。

つい先日徳丸さんが投稿した「NextGEN Gallery for WordPress 2.1.79未満にはSQLインジェクション脆弱性」についてもデモが行われました。

NextGEN Galleryプラグインはとても多くのサイトで写真や画像を使ったギャラリーを作成し記事に簡単に設置することができるプラグインです。

徳丸さん指摘の通りwpdbクラスの仕様の(wpdb::prepareメソッド)問題により、prepareメソッドを用いていながら

そういう意味では「NextGEN Gallery 」の作者もWordpressの仕様バグの被害者のような気もしてきます。

しかし、徳丸さんが後半で述べていたように脆弱性は仕様になくとも開発者の責任となる時代であることを実際の裁判事例を基に説明されていました。

オープンソースゆえWordPressの全仕様は確認可能です。さらに言えばSQL Injectionのように直接データ資産に危害を加えるような脆弱性はそうそうないので確認すべきソースも無理な量ではありません。プラグイン開発者としてソースを読みわからなければ、実際に被害を受けるに比べればと有識者に有償でも確認してもらうことは大切なことではないでしょうか。

ちなみに高速化したPHP7はBlind SQLも7倍速だそうな。

このあとにもWebshellのバックドアをつけるデモなど盛りだくさんでした。詳しくは第2回(3/16)、第3回(4/20)で同じ内容で公演されるそうなので是非ぜひ参加してみましょう。

以上です。参考になれば幸いです。