Wordpress Tips

WordPressの利用Tips

WordPressでxmlrpcを使ったブルートフォースアタックについて

ブルートフォースアタックはパスワード辞書を使った総当たり攻撃で、辞書と同じパスワードがヒットすれば、不正ログインを許してしまう原始的ではありますが結構怖い攻撃です。

当方のサイトへの最近の攻撃では、1万を越える異なるパスワードでログインが試みられています。

人がログイン画面からログインを試す場合、10回も繰り返せば嫌になります。が、しかしプログラムを利用すれば、お茶を飲んでる間にログインチェックが可能となります。クラッカーの皆さんは、さほど苦労せず脆弱なサーバーやサイトを日々探索しているのです。

さて最近ですが、WordPressのxmlrpc.phpを悪用してDDoS攻撃が仕掛けられたことから、悪用されたWordPressサイトの一覧が公開されました。日本の結構名のある会社のサイトも上がっていて、不名誉なレッテルを貼られてしまいました。

そんなレッテルは貼られたくないので、早速ping機能を無効にしました。

xmlrpcそのものはブログに取って大切な機能であるため、そのものを無効とするわけにはいきません。

が、何と、そこに付け込んだ新たなブルートフォースアタックが発生しました。

そのアタック方法は?

話には聞いてはいたのですが、実際どのように実行されているかは調べていませんでした。ですが、当方のサイトが標的にされたので早速確認してみました。

方法は至って簡単です。ログイン名とパスワードをWordPressのxmlrpc.phpに投げることで、戻されたその結果によりログイン名とパスワードが正しいかどうか分かるわけです。

以下は実際に投げ込まれたXML文です(見易いように編集してあります)。

xmlrpcに投げ込まれたXML

するとWordPressからは次のような結果が送信されます。

ログインできなかった場合

上記のログイン名、パスワードは誤りですのでこのようなデータが送り返されたわけですが、もし正しい場合はどんなXMLが送り返されるかを見てみました。

ログインが成功した場合

これではログイン画面を隠したところで裏口の場所が分かっているので、攻撃を避けるのは容易ではありません。

なお、WordPressにおける「XML-RPC」のAPIは、「XML-RPC wp」に一覧があります。

(140807)

「/?author=xx」でユーザー名が分かる?穴を塞ぐには

WordPressは記事の作成者で検索できるので、「author.php」テンプレートを利用して作成者別の一覧ページが作成できます。これは便利な反面、作成者のIDがあらわになるため、WordPressのログイン名が公開されている状態となります。

これを避けるため「ユーザー名が「/?author=xx」で知られるのを防ぐには」で、author.phpを表示しない方法について掲載しました。

これで安心していたのですが、ある日隠したはずのログイン名を利用したブルートフォースアタックがログインログに登録されていました。

サイト上でログイン名が表示されないように、テンプレートをチェックしたにも関わらず情報が漏れているのです。そこで調べたところ、穴が判明しました。それは「HTTPプロトコル」の通信データにあったのです。

HTTPプロトコルを簡単に説明すると、ブラウザとWebサーバー間でデータ通信するためのデータ伝送手順です。転送データにはブラウザに表示するHTMLデータ以外に、アクセスした結果のステータスコードや日時データが、目に触れない状態でやり取りされています。

この通信データの中に、何とユーザー名が含まれていたのです。

以下の通信データは、「http://web.mt-systems.jp/?author=1」とURLを入力したときの通信データの一部です。

?author=1の通信データ

author.phpでリダイレクトして表示しないようにしても、こんなところでユーザー名が分かってしまう「穴 ●」があったのです。

対処方法

WordPressはユーザー名に関して3つのデータ項目があります。

  • user_login
    ログイン名
  • user_nicename
    ユーザー名
  • display_name
    表示名

通常ログイン名でユーザー登録するとユーザー名には、自動でログイン名が設定されます。そしてプロフィール編集で表示名は編集できますが、ログイン名とユーザー名は編集できません。

通信データで「author」名に利用されるデータは、この「user_nicename」が利用されています。ですので「user_nicename」を書き換えれば良いのです。

書き換え方法

通常の管理画面からは編集できませんが、弊社のプラグイン「MTS Login Logger」を利用すればプロフィール画面から編集することができるようになります。

その他、サーバーにあるデータベースの管理画面からデータを直接編集しても良いでしょう。

(140807)

 

WordPress 3.8.1の自動更新ー止めるには

WordPress 3.8.1の自動更新ー止めるには

3.7で機能追加された自動更新機能ですが、日本語版ではこの3.8から機能が有効になったようで、作業用WordPressサイトから「自動更新完了」のメールが届き3.8.1に自動アップデートされていました。 More →

ユーザー名が「/?author=xx」で知られるのを防ぐには

ユーザー名が「/?author=xx」で知られるのを防ぐには

管理者名に「admin」の利用は脆弱なため使わないように言われています。が、WordPressでは「admin」を利用しなくても簡単にユーザー名を知られてしまう可能性があります。

More →

WordPressとHTTPS通信 予約入力フォームでSSLを利用するには

WordPressとHTTPS通信 予約入力フォームでSSLを利用するには

予約入力フォームには個人情報が入力されるため、SSL通信を実装したいと考える人は多いと思います。が、WordPressサイトでhttps://~アクセスしても画像のような表示になり、諦めていませんか?

More →