ワードプレスでXMLRPC.phpを通した管理者のパスワードを総当たりで突破しようとするブルートフォースアタックの手法とそれを防ぐ方法を解説いたします。

XMLRPCとは?XMLRPCはブルートフォースアタックにどのように利用される?

XMLRPCはワードプレスに直接投稿のデータなどを送信してプログラムからサイトを更新する仕組みを提供しています。

このような機能はワードプレスの認証(ログイン)を必要としますので、機能を利用するためにIDとパスワードも送信しなければいけません。
XMLRPC経由で送信されたIDとパスワードが合致しないとワードプレスはエラーを返します。
逆に言えば、総当たりでハッカーがIDとパスワードをXMLRPCに送信してエラーが返ってこなければそれが正しいIDとパスワードだと判定できることになるので、ブルートフォースアタックにも利用できてしまうのです。

下記のコードはXMLRPCにIDとパスワードを送信するコードのサンプルとなります。
※悪用される可能性もございますので一部コードを伏字にしています。何卒ご了承ください。

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://ワードプレスのURL/xmlrpc.php");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$content = array();
$params = array( 'ユーザーID', 'パスワード', $content);
$params =*****;
*****;
$result = curl_exec($ch);
curl_close($ch);
echo ($result);

‘ユーザーID’, ‘パスワード’が合致しない場合下記のような返答をワードプレスは返します。

<?xml version="1.0" encoding="UTF-8"?>
<methodResponse>
  <fault>
    <value>
      <struct>
        <member>
          <name>faultCode</name>
          <value><int>403</int></value>
        </member>
        <member>
          <name>faultString</name>
          <value><string>ユーザー名またはパスワードが正しくありません。</string></value>
        </member>
      </struct>
    </value>
  </fault>
</methodResponse>

もしIDパスワードが合致すると下記のようなデータをワードプレスが返してしまいます。

<?xml version="1.0" encoding="UTF-8"?>
<methodResponse>
  <params>
    <param>
      <value>
      <array><data>
  <value><struct>
  <member><name>isAdmin</name><value><boolean>1</boolean></value></member>
  <member><name>url</name><value><string>http://ワードプレスのURL/</string></value></member>
  <member><name>blogid</name><value><string>1</string></value></member>
  <member><name>blogName</name><value><string>サイト名</string></value></member>
  <member><name>xmlrpc</name><value><string>http://ワードプレスのURL/xmlrpc.php</string></value></member>
</struct></value>
</data></array>
      </value>
    </param>
  </params>
</methodResponse>

この違いからIDパスワードが合致したかを機械的に判定できてしまう事になります。

XMLRPCによるブルートフォースアタックを防ぐには?

XMLRPC.phpを完全に止めるにはテーマのfunctions.phpに下記のように記載します

add_filter( 'xmlrpc_enabled', '__return_false' );

ただ、XMLRPCは現在様々なプラグイン等で利用されていますので完全に止めてしまうのはサイトに不具合を引き起こす可能性がありお勧めできません。

セキュリティープラグインでXMLRPCのブルートフォースアタックのみを防ぐことができるものもございます。
このようなプラグインを利用いただくことでもXMLRPCのブルートフォースアタックを防ぐことが可能です。

【無料】ワードプレス:マルウェアスキャン&セキュリティープラグイン [マルウェア・ウィルス検出と駆除]

All-In-One Security (AIOS) – Security and Firewall

WordPress ワードプレスのマルウェア駆除・セキュリティー対策のご依頼・ご相談はワードプレスドクターまでお気軽にお送りください