WordPressの脆弱性診断・侵入テストWPScan!パスワードの有効な桁数は?

WordPressの脆弱性診断・侵入テストWPScan!パスワードの有効な桁数は?

こんにちは宮川(@miyakawa2449)です。

WordPressの脆弱性・改ざん対策の記事を10回シリーズで書き上げて公開しました。

世界シェアが高いWordPress故にハッカーにも狙われやすく、セキュリティーホール情報もたくさん出回っています。

安全に利用するには技術やノウハウは重要です。

さて、自分がインストールして構築した WordPress がどれほど安全か?または危険なのか脆弱性診断でき、かつ侵入試験をするツールがあります。

WPScan というツールで、Rubyで動作するシステムです。

この記事ではWPScanというツールの使い方を詳しく紹介しているわけではありません。

ここでは、WPScanというツールがあれば誰でもハッキングできる危険性があるという事実と、IDとパスワードを守ることがどれだけ重要であるか!ということを知っていただくことがゴールとなります。

そこでWPScanの簡単な使い方と、パスワードを探る方法、無効なパスワードと有効なパスワードなども合わせてご紹介していきます。

1.WPScan の簡単な使い方

■WPScan のインストール

私はMac OS 10.13.6 を利用しているので次のコマンドでインストールしました。

$ git clone https://github.com/wpscanteam/wpscan.git
$ cd wpscan
$ gem install bundler
$ bundle install --without test

■WPScan の使用方法

インストールしたディレクトリーに移動して次のコマンドを使用します。

 ■WPScanの基本テスト

$ ruby wpscan.rb --url http://www.example.com/

このコマンドを利用することで、侵入は行いませんが、基本的な情報をスキャンすることができます。

下記はその情報の一部です。

  • WEBサーバーの種類
  • PHPバージョン
  • wp-adminのパーミッション
  • ユーザーID
  • 投稿者名
  • WordPressバージョン
  • プラグインの名前とバージョン
  • テーマの名前とバージョン

■WPScanでユーザーの一覧を調べる

$ ruby wpscan.rb --url http://www.example.com/ --enumerate u

このコマンドを利用することで、ユーザーの一覧を取得を試みることができます。
セキュリティが甘いと情報が抜かれます。

wpscan画面例
あるブログの検証テスト結果。
LoginがID。Nameは投稿者名です。

2.WPScanでブルートフォースアタック

このコマンドを利用することで、用意したパスワードリストからブルートフォースアタック(パスワード総当たり)を試みることができます。
リスト内にパスワードが存在すれば一致した値を表示してくれます。

ブルートフォースアタック例
ブルートフォースアタックの実施例。
16個のパスワード候補を用意しました。参考例のため15個はダミーパスワード、1つだけ本当のパスワードを含めてテストしました。
ID3番のパスワードがヒットしました。

3.ブルートフォースアタックに使うパスワード候補の用意の仕方

ブルートフォースアタックにはパスワード候補ファイルが必要になります。

パスワード候補ファイルの用意しの仕方

■ユーザーが手動で用意する

テキストエディタで思い当たるパスワードを手入力で用意します。
サイト名やユーザー名などの様々なキーワードをヒントにして、思いつく限りのパスワードを入力します。
ターゲットをよく知っていればパスワードを推測しやすいという特徴はあります。
ただし、人力故にパスワード候補数をそれほど用意できないというデメリットがあります。

■辞書攻撃用ファイルを用意する

パスワード解析にの常套手段として、辞書に載っている言葉を使ってブルートフォースアタックされることがあります。

それを辞書攻撃と言います。

「辞書攻撃 ファイル」などのキーワードで検索するとすぐヒットします。

もし、辞書に載っているような言葉、car,globe, japanese, flower などをパスワードに使っている人はすぐに変更することをおすすめします。

【参考サイト】辞書攻撃に使う元ネタの辞書ファイル – ろば電子が詰まっている

■crunchコマンドを利用してパターンファイルを自動生成する

Linuxなどでは「crunch」コマンドを利用してパスワードを自動生成することができます。

もし、「crunch」コマンドがなければインストールして利用します。

【使用方法】

$ crunch <出力文字列の最短の長さ> <出力文字列の最長の長さ> <使用する文字列> <options> 

例えば、次の場合はa〜fの半角アルファベットの組み合わせを4〜5桁で用意して、test.txtファイルとして保存してくれます。

$ crunch 4 5 abcdef -o test.txt

4.無効なパスワードと有効なパスワード

crunchコマンドを実行すると、パスワード生成完了前に完成ファイルサイズを教えてくれます。

実際にコマンドを叩いて出た結果を下の表にまとめてみました。

使用例
8桁半角英字小文字・大文字+数字のパスワードを生成。正規表現は使えなかったので長いコマンドになりました。
桁数 英文字小文字 英文字大文字 半角数字 ファイルサイズ
5 67MB
5 2GB
5 5GB
6 370GB
7 25TB
8 1787TB(1.7PB)

 

6桁以下のパスワードは一般的なパソコンでも用意できるファイルサイズであることがわかります。

そして、7桁を越えると途端に、パスワードの組み合わせのファイルサイズが大きくなっているのです。

TBはGBのおよそ1000倍、PBはTBのおよそ1000倍のファイルサイズ(データ容量)になります。

この結果から安全で有効なパスワードを考えるとすれば、英数記号+アルファベットは大文字小文字を組み合わせ、最低7桁以上で用意する必要があることが分かります。
7桁以上でさらに記号を組み合わせれば、より強固なパスワードを作ることができます。

逆に6桁以下のパスワードはほとんど役に立たない無効なパスワード言われてもおかしくないということも分かりました。

8桁半角英数文字のパスワード組み合わせ総数は 218,340,105,584,896行でした。

とはいえ、パスワードが外部に知れては意味がないので、くれぐれも付箋に書いてパソコンに貼るということだけはやめましょう。

次の記事は、より複雑で推測されにくく覚えやすいパスワードの作り方を紹介しています。
ぜひ、合わせてお読みください。

5.WPSanについて参考にしたサイト

最後に

今回WPScanというツールを使いWordPressの脆弱性調査、および、侵入テスト(実際に侵入できてしまうので悪用しないように)を試みました。

ユーザーIDを守りつつ、複雑なパスワードを設定することの重要性がご理解いただけましたでしょうか。

セキュリティのゆるいWordPressだとWPScanを使えばユーザIDが簡単に知ることができました。
さらにユーザーIDを見つけ出せれば、パスワードの組み合わせを用意し、ブルートフォースアタックすることが簡単であることも分かりました。

あなたのWordPressは大丈夫でしょうか?

以上、「WordPressの脆弱性診断・侵入テストWPScan!パスワードの有効な桁数は?」でした。

最後までお読みいただきありがとうございました。

宮川(@miyakawa2449)でした。

それではまた〜♪