カメニッキ

カメとインコと釣りの人です

WordPressのログイン画面で辞書攻撃をやってみた

使用したもの

  • 適当に拾ってきた辞書
  • WordPress最新版をインストールしたサーバ(↑の辞書からランダムに選択した単語をパスワードとして設定)
  • サーバーセキュリティプログラミング 5章のJoomla(CMS)への辞書攻撃コード

その他準備

  • Joomla向けの攻撃コードを、WordPress向けに修正(ユーザ名・パスワードフィールドのnameや、ログイン成功を判定するためのレスポンス文字列をちょろっといじる) 

環境

  • KaliLinux 4.0.0 (たまたま学習利用のため利用したが、Pythonが動くならWindowsMacでOK)
  • Python 2.7.9

結果

辞書から選出した文字列を利用しているため、当然ながら成功。 ちょっと雑な検証だったが、思った以上にあっさりできてしまう。40万ワードの辞書だったので、大量の試行結果が画面に出てきたが停止することなくログインを繰り返してた。

  • plainなWordPressは、総当り攻撃に対して全くといっていいほど防御手段を持っていない。再施行の制限がない。
  • Pythonを初めて書く人間が、そのへんから拾ってきたコードをちょっと修正するだけで、簡単に攻撃できてしまう。
  • 今回は辞書を使った攻撃だが、パスワードへランダムに生成した文字列を渡すことも可能であり、かつ複数スレッドによる並列処理も簡単に行えるため、ターゲットのWordPressが動作しているホストが耐えれるのであれば、100並列で攻撃することも可能であること。

が改めて怖いと思った。

最低限、以下の対策をする。

  • .htaccessによる、許可ホスト以外からのログイン画面表示禁止
  • WordPressプラグインでログイン画面へCAPTCHAを追加する
  • 辞書に無く、推測しずらい、英数記号を織り交ぜた可能な限り長いパスワードを使用