ワードプレスでXMLRPC.phpで総当たり攻撃をされた場合に防ぐ方法を解説いたします。
ワードプレスのXMLRPCによる総当たり攻撃
XMLRPCはワードプレスの一番上のディレクトリにあるxmlrpc.phpを介してワードプレスの投稿を行ったりなど様々な遠隔操作の機能を提供する機能です。
ただ、この機能を利用して総当たりで、様々なログインパスワードを送信してログインできるかを確認してパスワードを割り出すハッキング攻撃も可能です。
例えばWPSCANはXMLRPCを介してwp.getUsersBlogs という関数を実行し、ログインできるパスワードを探し出す機能があります。
PHPでこの関数を呼び出すコードのサンプルは下記となります。
$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( 'ユーザー名', 'パスワード', $content); $params = xmlrpc_encode_request('wp.getUsersBlogs', $params); curl_setopt($ch, CURLOPT_POSTFIELDS, $params); $result = curl_exec($ch); curl_close($ch); echo ($result);
ログインIDとパスワードが違う場合は下記のように出力されます。
この出力を機械的判定して、ログインできたかできないかを判定しパスワードを総当たりで割り出すためにXMLRPCが利用されます。
XMLRPC攻撃を防ぐ
XMLRPCへの総当たり攻撃を防ぐには、ワードプレスのトップディレクトリにあるHTACCESSファイルにxmlrpc.phpへのアクセスを禁止するコードを書き込めば防ぐことが可能です。
# Block WordPress xmlrpc.php requests <Files xmlrpc.php> order deny,allow deny from all </Files>
テーマのFunctions.phpに下記のように記載いただくことでもXMLRPCの機能を止めてしまう事が可能です。
Add_filter( ‘xmlrpc_enabled’, ‘__return_false’ );
ただXMLRPCを完全に塞いでしまうと、ワードプレス系のアプリの使用や、特定のプラグインの動作に支障をきたす場合がございます。
この場合特定の期間内に大量にxmlrpc.phpにアクセスがあった場合にブロックするなどの機能が必要となるかと思います。
※この機能は【無料】ワードプレス:マルウェアスキャン&セキュリティープラグイン [マルウェア・ウィルス検出と駆除] で無料で簡単に設定できます。よろしければご利用ください。
WordPress ワードプレスのマルウェア駆除・セキュリティー対策のご依頼ご相談はワードプレスドクターまでお気軽にお送りください