WordPress の XMLRPC の決定版ガイド (+ 無効にする方法)

公開: 2021-04-08

Web サイトのセキュリティは、正しい方法で解決するのが難しいものです。 具体的には、WordPress サイトへの攻撃で一般的に悪用される XML-RPC に関連するセキュリティの問題です。 インターネット上にはあらゆる種類のソリューションを提供する多くの情報がありますが、どれが正しいのでしょうか? この記事では、方法、解決策、実際に最適な解決策について説明します。 飛び込みましょう!

XMLRPC は WordPress 自体よりも古いものです。 このシステムは、ユーザーが新しい投稿をオフラインで作成してからサーバーにアップロードできるようにすることで、遅いインターネット接続のジレンマと戦うために WordPress に導入されました。 WordPress を他のアプリケーションとリモートで接続する機能は、xmlrpc.php ファイルでのみ可能でした。

一部の経験豊富な開発者でさえ、XMLRPC とそれに関連するセキュリティ上の脅威を完全には理解していません。 あなたが管理しているサイトに、すぐに対処する必要があるアクティブな XMLRPC ファイルが存在する可能性は十分にありますが、XMLRPC がどのように運用され、安全に処理するための最善の方法を知った後にのみ、効果的な行動計画を実行することができます。

WordPress には独自の REST API がありますが、xmlrpc.php ファイルは依然としてコア内に存在し、WordPress サイトをさまざまなサイバー攻撃にさらすデフォルトで有効になっています。 この記事では、このファイルの使用法、それに関連する脆弱性、およびサイトのセキュリティを危険にさらすことなくこれを処理する方法について説明します。

目次

  • xmlrpc.php ファイルとは?
  • 悪質なハッカーは xmlrpc.php ファイルをどのように利用できるのでしょうか?
    • ブルートフォース攻撃
    • DDoS 攻撃
    • クロスサイト ポート攻撃 (XSPA)
  • XMLRPC 攻撃をブロックする効果のない方法
    • XMLRPC を完全に無効にすることによって
    • セキュリティプラグインをインストールすると実際にサイトに損害を与える理由
    • Accelerated Domains は顧客のために XMLRPC 問題をどのように処理しますか?
  • 最終的な考え

xmlrpc.php ファイルとは?

XML-RPC (リモート プロシージャ コール) は、クロスプラットフォーム通信用に作成された最も単純な形式です。 このプロトコルは、HTTP をトランスポートとして使用し、XML をエンコーダーとして使用して、プロシージャー呼び出しを行うために使用されていました。 クライアントは、HTTP 要求をサーバーに送信してこれらの呼び出しを行い、その代わりに HTTP 応答を受け取ります。 XML-RPC は HTTP リクエストを介して関数を呼び出し、これらの関数はいくつかのアクションを実行して、ハードコーディングされた応答を返します。

概念を完全に理解するために、これを REST API 呼び出しと比較してみましょう。

手順RPC 休み
サインアップ投稿/サインアップ投稿/ユーザー
ユーザーの読み取りGET/readUser?userid=123 GET/人/1234

REST は URL パラメーターを使用してリソースを識別しますが、RPC はクエリ パラメーターを使用して関数の引数として提供します。

WordPress は XMLRPC を使用して、ユーザーがサイトをリモートで操作できるようにしました。 モバイルアプリを強化し、JetPack、 xmlrpc.phpなどのプラグインをサポートするために今でも使用しています。 それに答えるには、まずそれに関連する脆弱性と、それらを回避するために利用できるソリューションを検討する必要があります。

悪質なハッカーは xmlrpc.php ファイルをどのように利用できるのでしょうか?

XMLRPC を使用して、ハッカーはリモート プロシージャ コール (RPC) を活用し、関数を呼び出して必要なデータをフェッチします。 大多数の WordPress サイトでは、 xmlrpc.phpファイルは簡単に追跡可能であり、ハッカーは任意の XML データを送信するだけでサイトを制御し、特定の種類の攻撃を実行するために用意したコードを実行します。

WordPress XMLRPC がどのように侵害されるかを理解するために、それに関連する最も一般的なサイバー攻撃を見てみましょう。

ブルートフォース攻撃

ブルートフォース攻撃では、ハッカーは多数のログイン試行を実行して、正しいユーザー名とパスワードを推測しようとします。 残念ながら、多くの WordPress サイトは脆弱な管理者パスワードを使用しているか、攻撃者を阻止するためのセキュリティ レイヤーが追加されていません。 これらのサイトは、このタイプの攻撃で簡単に侵害されます。

他の人は強力なパスワードを使用し、reCaptcha や総当たり攻撃に対して効果的な自動 IP ブロックなどのセキュリティ メカニズムも備えていますが、ハッカーが XMLRPC を使用することを決定した場合。 彼女は WordPress 管理者にアクセスする必要さえありません。

Kali Linux の非常に一般的なツールである WPSCAN は、すべてのユーザー名を列挙するために使用されます。それが完了すると、ハッカーはxmlrpc.phpファイルを使用して、次の HTTP 要求を被害者のサイトに送信することにより、パスワードをブルート フォースします。

POST /xmlrpc.php HTTP/1.1
User-Agent: Fiddler
Host: www.example.com
Content-Length: 164

<methodCall>
<methodName>wp.getUsersBlogs</methodName>
<params>
<param><value>admin</value></param>
<param><value>pass</value></param>
</params>
</methodCall>

上記の例では、ハッカーは正しいパスワードを取得するまで、何千ものバリエーションを送信できます。

上記のリクエストに対して、次のレスポンスが返されます。 応答には、エラー コードと、試行されたユーザー名とパスワードが正しくないことを示す明確なメッセージが含まれています。 これは、正しいパスワードが一致するまで再試行するようハッカーに指示する明確な兆候です。

HTTP/1.1 200 OK
Server: nginx
Date: Sun, 26 May 2019 13:30:17 GMT
Content-Type: text/xml; charset=UTF-8
Connection: keep-alive
X-Powered-By: PHP/7.1.21
Cache-Control: private, must-revalidate
Expires: Sun, 02 Jun 2019 13:30:17 GMT
Content-Length: 403

<?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>Incorrect username or password.</string></value>
</member>
</struct>
</value>
</fault>
</methodResponse>

応答は、HTTP 200 コードと、指定されたユーザー名とパスワードが正しくないというメッセージを返しました。 XMLRPC チャネルを経由することで、ハッカーは reCaptcha やログイン試行の制限プラグインについて心配する必要がなくなります。 正しいパスワードが取得されるまで、バリエーションを実行し続けることができます。

注:ブルート フォース攻撃はリソースを大量に消費し、パフォーマンスの問題も引き起こします。 試行錯誤のプロセスは、実際の訪問者にサービスを提供するためにサーバーがビジー状態になる可能性がある、より長い時間ループで実行されます。 この不要なリソース消費により、サーバーはより多くの電力を消費します。

DDoS 攻撃

分散型サービス拒否 (DDoS) は、サーバーに何百、何千もの同時リクエストを送信することで、サーバーを麻痺させる可能性がある最も致命的なサイバー攻撃の 1 つです。 ハッカーは、WordPress のピンバック機能と xmlrpc.php ファイルを使用して、このような攻撃を実行します。

理想的には、ハッカーは、数回ヒットする可能性があり、応答に時間がかかるエンドポイントまたはページをターゲットにします。 このようにして、単一のヒットがサーバー リソースに最大の影響を与えることができます。私たちの場合、XMLRPC はハッカーがそのようなエンドポイントを公開するのに役立ちます。

すでに侵害されている複数の WordPress サイトを使用して pingback.ping メソッドを実行し、1 人の被害者を標的にしています。 圧倒的な数の HTTP GET および POST 要求が通常のトラフィックを妨害し、最終的にサーバーをクラッシュさせます。

まず、ハッカーは次のリクエストを送信して、xmlrpc.php ファイルが有効になっているかどうかを確認します。

POST /xmlrpc.php HTTP/1.1
Host: withinsecurity.com
Connection: keep-alive
Content-Length: 175

<?xml version="1.0" encoding="utf-8"?>
<methodCall>
<methodName>demo.sayHello</methodName>
<params>
<param>
<value>admin</value>
</param>
</params>
</methodCall>

標的の Web サイトで XMLRPC が有効になっていることが確認されると、攻撃者は悪用されたサイトのネットワークを使用して攻撃を開始し、複数の pingback 要求を被害者のサイトに送信します。 これは複数のホストから自動化され、被害者のサイトで大規模な DDoS 攻撃を引き起こすために使用される可能性があります。

POST /xmlrpc.php HTTP/1.1
Host: withinsecurity.com
Connection: keep-alive
Content-Length: 293

<methodCall>
<methodName>pingback.ping</methodName>
<params>
<param>
<value><string>http://173.244.58.36/</string></value>
</param>
<param>
<value><string>https://example.com/blog/how-to-make-a-salad</string></value>
</param>
</params>
</methodCall>

クロスサイト ポート攻撃 (XSPA)

クロスサイト ポート攻撃 (XSPA) は非常に一般的で、ハッカーが悪意のあるスクリプトを挿入して、TCP ポートと IP アドレスに関する情報を取得します。 WordPress の場合、Cloudflare のような基本的な WAF などの IP マスキングをバイパスするために、XMLRPC がその pingback メカニズムと共に使用されます。

XSPA 攻撃では、ハッカーは pingback.ping メソッドを使用してターゲット Web サイトの投稿を pingback し、応答として IP アドレスを送信します。 ハッカーはスニファを使用して、pingback とブログ投稿のライブ URL を送信するためのエンドポイントを作成します。

ハッカーは彼女のサーバーから次のリクエストを送信します。

<methodCall>
<methodName>pingback.ping</methodName>
<params><param>
<value><string>http://<YOUR SERVER >:<port></string></value>
</param><param><value><string>http://<SOME VALID BLOG FROM THE SITE ></string>
</value></param></params>
</methodCall>

応答に faultCode と 0 より大きい値が含まれている場合は、HTTP パケットを直接送信できるようにポートが開いていることを意味します。

XMLRPC 攻撃をブロックする効果のない方法

ここまでの記事で、xmlrpc.php ファイルは DDoS、ブルートフォース、クロスサイト ポート攻撃などの重大なサイバー攻撃を受けやすいことを確認しました。したがって、これらの攻撃をブロックするには、xmlrpc.php ファイルを適切に処理することが重要です。 .

XMLRPC を完全に削除することによって

XMLRPC ファイルを削除するだけで、アクセスしようとする人にサーバーが 404 エラーをスローし始めます。 このソリューションの欠点は、WordPress を更新するたびにファイルが再作成されることです。

XMLRPC を完全に無効にすることによって

他のより実行可能なオプションは、 xmlrpc.phpファイルを無効にすることです。 これを行うには、 .htaccessファイル内にコード ブロックを追加するだけです。 WordPress によって追加された変更されない.htaccessルールの前に、必ずこれを行ってください。

<Files xmlrpc.php>
order allow,deny
deny from all
</Files>

これにより、それを使用するすべてのアプリケーションまたはサービスのxmlrpc.phpファイルが無効になります。 XMLRPC 経由で WordPress サイトにアクセスしたい場合に備えて、特定の IP アドレスをホワイトリストに登録できます。 そのためには、次のコマンドを追加する必要があります。

<Files xmlrpc.php>
<RequireAny>
Require ip 1.1.1.2
Require ip 2001:db8::/32
</RequireAny>
</Files>

長所

  • XMLRPC がサイバー攻撃で悪用されるリスクを排除します。
  • 長期的なパフォーマンスの利点とサーバー リソースの節約。

短所

  • XMLRPC を無効にすることは、このバージョンのリモート アクセスを使用するアプリのリモート アクセスを無効にすることと同じです。 これは、Jetpack、WP モバイル アプリ、または XMLRPC 経由で WordPress サイトに接続するその他のソリューションが、サイトに接続できなくなったことを意味します。
  • カスタム アプリのレガシー コードも機能しない可能性があります。

セキュリティプラグインをインストールすると実際にサイトに損害を与える理由

WordPress ユーザーは、サイトのパフォーマンスへの影響についてあまり考えずに、必要な機能や機能のプラグインに頼ることがよくあります。 XMLRPC 関連のセキュリティ問題から Web サイトを保護することを約束する WordPress セキュリティ プラグインがいくつかありますが、実際には、それらはサイトをさらに傷つけます。

プラグインを使用してサイトを保護することが最善の選択ではない理由のいくつかを次に示します.

  • セキュリティ プラグインは、アプリケーション レベルでのみ有効であり、サーバーを攻撃から保護するものではありません。
  • サイトに不要なコードを追加して、パフォーマンスを低下させ、最初のバイトまでの時間 (TTFB) を増やします。
  • これらのプラグインの中には、善よりも害を及ぼすものがあり、ハッカーが Web サイトへのバックドアを作成するために使用します。
  • これらのプラグインは、より多くの作業負荷を追加する頻繁な管理を必要とします。

上記の評価から、XMLRPC セキュリティの問題を処理するための理想的なソリューションを提供するオプションはありません。 これにより、加速ドメインが表示されます。 複雑なセキュリティ関連の問題などを解決するために構築されたサービス。 Accelerated Domains が XMLRPC 問題を効果的に解決する方法を見てみましょう。

Accelerated Domains は顧客のために XMLRPC 問題をどのように処理しますか?

Accelerated Domains は、複雑なパフォーマンス、セキュリティ、およびスケーラビリティの問題を最も効率的な方法で解決します。 Accelerated Domains は、XMLRPC に関連するものを含め、あらゆる種類のサイバー攻撃をブロックするエンタープライズ レベルのマネージド セキュリティを提供します。

Accelerated Domains のスマートセキュリティ エンジンはサーバーの前にあり、すべての HTTP トラフィックの 40% 近くをフィルタリングします。 継続的なデータ フィードと、Servebolt の実践的な知識とトラフィック分析によって強化されたインテリジェントなヒューリスティック機能により、タイムラインの早い段階で最も巧妙なサイバー攻撃を検出します。 Accelerated Domains は、サイトのパフォーマンスをまったく低下させることなく、魔法のように機能します。 実際、それはそれを加速します。

Accelerated Domains のプロアクティブなセキュリティ エンジンは、Web サイトを DDoS 攻撃から自動的に保護します。 60 Tbps に近いネットワーク容量を備えているため、インターネットでの最大規模の DDoS 攻撃にも耐えることができます。 同様に、悪意のあるアクティビティを防止するために、単一のソースから生成されたリクエストの数が特定および制限される自動レート制限機能を通じて、ブルートフォース攻撃に対する効果的な防御メカニズムを提供します。

長所

  • Accelerated Domains は、XMLRPC に関連するセキュリティの脆弱性の大半を軽減するため、無効にする必要はありません。
  • ユーザーは、Jetpack、WooCommerce アプリ、および xmlrpc.php ファイルに依存するその他のツールなどのプラグインを引き続き使用できます。
  • どのドメインでも簡単に統合できるため、 .htaccessファイルを変更する必要はありません。
  • 追加のプラグインをインストールする必要はありません。

短所

  • 何もありません。

最終的な考え

サイバー攻撃は日々巧妙化しており、ウェブマスターおよびビジネス オーナーとして、サイバー攻撃を理解し、攻撃に遭遇するためのツールを知ることが不可欠です。 攻撃の大部分は、ソフトウェアの継続的な監視や更新などのプロアクティブなアプローチ、または自動操縦ですべてを実行する Accelerated Domains などのツールを追加することで回避されます。 有効にすると、Accelerated Domains はトラフィックをインテリジェントにフィルタリングし、必要に応じて必要なアクションを実行して、オリジン サーバーと Web サイトをサイバー攻撃から保護します。