みなさんこんにちは、新卒でエンジニアとして入社した西澤です。
入社して4ヶ月間リモートだったので、そこに関しての感想を書こうと思ったのですが、同期に先を越されて急遽タイトル変更したのは内緒です。
リモートの感想に関して同期も似たようなことを感じていて、まとめてくれているので是非見てみてください。
さてここからが本題です
WordPress ご存知でしょうか?
色々細かく言いたいところですが、全くわからない人のためにざっくり説明すると、
共通のルールに従って、簡単にブログやサイトを運営できるツールです。
コンテンツ管理システム(CMS)が正解ですが、今回は以降の呼称をツールで統一します。
大変便利なツールで、個人・企業を問わず世界中で利用されていて、世界のWebサイトの37%がWordPress を利用して作られているというデータもあります。
似たような機能を持つツールは複数ありますが、その中でもWordPressの世界シェア率は63%で、対象を日本に絞るとなんと82%以上が利用しているというデータも出ています。
データ参照元:
WordPress、日本で82.4%という高いシェア | マイナビニュース
米ホワイトハウスがツールをWordPressに切り替えたよって話があって、ドヤ顔で書こうと思ったんですが、3年前の話でした。老いを感じますね。
ざっくりとWordPressについて理解してもらえたと思いますが、
ここからが今回の大事なところです。
大変便利でシェア率も高い WordPress なのですが、インストールしてそのままの状態で使うと、多くのセキュリティ面での脆弱性を抱えたまま運用することになります。
知らないまま使ってると簡単に情報が盗まれたり改ざんされる可能性があるということですね。
今回は最も馴染みやすそうな「管理画面のログインページ」に対象を絞って実演します
この記事を見た方に、
「WordPressはデフォルトだとまずい、セキュリティ対策しなきゃ」という認識を持っていただけたら幸いです。
それでは実際に攻撃していきましょう!
楽しみですね。
ちなみに、無断で他人や企業のサイトに攻撃を仕掛けると、訴えられる可能性が大いにあるので、試してみる方は自分の管理しているサイトのみにしてください。
僕は今回の記事を書くにあたって、事前に許可をもらったので、安心して(?)攻撃できますね。
攻撃対象の確認
今回攻撃するのは、僕が個人が脆弱性確認用に開いたデフォルトのままWordpressのサイトになります。
基本的には、WordPressで運用しているサイトのデフォルトだと
〇〇〇.〇〇〇/wp-admin/ か 〇〇〇.〇〇〇/wp-login.php/
でアクセスするとWordPressの管理画面へのログインページが開かれるはずです。
上記の例で例えると下記URLになります。
※ドメイン部分は個々人のものに当てはめてください
- 脆弱性1: 管理画面へのリンクが固定である
簡単に攻撃対象にアクセスできました!
後はユーザー名とパスワードを入れて、管理画面に入るだけですね★
- 脆弱性2: 何回でもログインを試せる
デフォルトでは、5分以内に3回失敗したら暫くログインできないとか、同一IPアドレスからの失敗は連続○回までとか設定がないので、いくらでもパターンが試せます。
これだけでもブルートフォースアタックと呼ばれる総当り攻撃の類いを試せば、いつかログインできちゃいますね。
そして、さらに
- 脆弱性3: ユーザー名はデフォルトだと簡単に割り出せる
攻撃の調査段階で使うツールでも分かるのですが、誰でも簡単にユーザー名は割り出せます。
〇〇〇.〇〇〇//?author=[ID] でアクセスすると見れちゃうんですね。
例に当てるとと下記のようになります。
アクセスした後にURLのところを見てください。
末尾の赤い枠で隠しているところ がユーザ名です。
ID =1はWordPressのサイトを立ち上げてから一番最初に作るユーザーなので管理者確定です。
ちなみに、数字の番号を増やしていけば順番に対応したユーザー名が出てきます。
ユーザー名 × パスワード の組み合わせのうち一つが既に割れました。
後は時間をかけてじっくりとパスワードに対して総当りするだけですね。
ここまでやられたらほぼ詰んでると言ってもいいと思います。
大切なのは、WordPressがデフォルトの状態だとこれができてしまうということですね。
実際にログインまでやってみる
デフォルトWordPressサイトの脆弱さがわかったところで、実際にログインまでいってみましょう!
今回は「Kali Linux」と呼ばれる定番のセキュリティ関連のツールが入っているOSを利用し、初期インストールされている「WPscan」というツールを使います。
WordPressの脆弱性についてがメインなので、環境の作成については、「kali linux wordpress」「kali linux インストール」とかで調べると日本語のページがたくさん出てくると思うので、各自でやってください。
予めことわっておきますが、Kali Linuxやそれに付随するツールたちは本来セキュリティの「調査」に使われるものです。悪用もできちゃうよという話なので、使う人の立場によって見方が変わるよという認識だけ共有しときたいです。
余談ですが、イギリス政府が発表した「子どものPCに入っていたら注意すべきソフトウェアリスト」にkali linux が入っているんですよ。
なにが言いたいかというと、子供でも興味があれば簡単に攻撃できちゃう時代なんだよて話ですね。
調査1: サイト全体の情報を確認
とりあえず簡単なスキャンをしてみました。
- 言語のバージョン
- WordPressのバージョン
- 使っているテーマ
- 使っているプラグイン
などなど、今回は深堀りしませんが使ってるバージョンやプラグインなんかも攻撃時に取得できますね。
調査2: ユーザー一覧を取得してみる
ばっちり取れました。
こちらは既に入手できてるので飛ばします。
調査3: ユーザーとパスワードの組み合わせを見つける
ではパスワードを見つけて行きましょう!
総当りで検索かけてもいいんですが、サーバーへの負荷と時間がすごいことになっちゃうので、辞書攻撃というあらかじめ予測されるリストを準備して順次突き合わせていく方法を取ります。
ネタバレしちゃうと今回はあらかじめ僕のIDのパスワードをネットで拾ったリストの中の適当なパスワードに一時的に合わせときました。
時短のために辞書攻撃で実演しますが、デフォルトのWordPressのままだと総当りもできてしまうってことは覚えておいてくださいね。
そして6万件のリストの中から
ばっちり出ました。
後は管理画面にて入手したユーザー名とパスワードを入力すればログイン完了そして、なんでもやりたい放題です。
まとめ
いかがだったでしょうか?
「WordPressはデフォルトのままだとまずい」
ということを伝えたかったので、攻撃方法については詳しく解説しませんでしたが、ネットで無料配布されてるツールでも充分に脅威であることが伝わったかと思います。
今回取り上げた脆弱性に関していえば、全てWordPressのプラグインで対策することができます。
皆さんもこの機会に是非、セキュリティに関して見直してみてください!