Hushfort

WordPress サイトが外部に何を公開しているか、セキュリティチェックするには?

執筆:Eureka Studio · 更新日

要点

ログアウトした状態で、実際のリクエストを使って WordPress サイトを外部からテストします。/wp-login.php、/xmlrpc.php、/wp-json/wp/v2/users、/?author=1、/wp-sitemap-users-1.xml を開いてみてください。それぞれ、ログインの入口が開いているか、ユーザー名が漏れているかを示します。ブラウザーや curl で実行することも、スキャナー機能のあるプラグインに実行させて見つかったものを名指しさせることもできます。

手順

  1. 1手順 1

    プライベートウィンドウかターミナルを開く

    自分としてではなく、見知らぬ他人としてテストします。ログイン中のリクエストには一般の人より多くのものが見えるため、必ずログアウトした状態で確認してください。

    ボットが送る 5 つのリクエスト
    curl -sI https://yoursite.com/wp-login.phpcurl -s  https://yoursite.com/xmlrpc.phpcurl -s  https://yoursite.com/wp-json/wp/v2/userscurl -sI https://yoursite.com/?author=1curl -sI https://yoursite.com/wp-sitemap-users-1.xml
  2. 2手順 2

    ログインの入口を確認する

    wp-login.php にログインフォームが表示されるなら、デフォルトのログインが公開されています。xmlrpc.php が「accepts POST requests only」と応答するなら、第二のログイン口も開いています。

    yoursite.com/xmlrpc.php の応答: XML-RPC server accepts POST requests only
  3. 3手順 3

    ユーザー名の漏えいを確認する

    /wp/v2/users が返す JSON の一覧、?author=1 から /author/name/ へのリダイレクト、ユーザーのサイトマップは、いずれもログイン名を明かしてしまいます。

    公開されている REST ユーザー一覧にログイン名 demo-admin が表示されている
  4. 4手順 4

    攻撃面スキャンで全体像を把握する

    Hushfort で「概要」を開き、「攻撃面スキャン」の下にある「再スキャン」を押します。サイトに実際のリクエストを送り、見つかったユーザー名を一つひとつ名指しします。

    開いている箇所が 3 件の攻撃面スキャン: XML-RPC が開いており、REST ユーザー一覧と投稿者スキャンで demo-admin が公開されている
  5. 5手順 5

    見つかったものを塞ぎ、もう一度スキャンする

    「攻撃面の強化」をオンにして「再スキャン」を押します。赤だった入口には緑のチェックが付き、残ったものは「要確認」として修正案とともに表示されます。

    攻撃面の強化後の攻撃面スキャン: XML-RPC、REST ユーザー一覧、投稿者スキャン、サイトマップの投稿者一覧がすべて塞がれている

なぜ重要なのか

セキュリティのアドバイスの多くは、スイッチの話です。これをオンに、あれを無効に。しかしスイッチが教えてくれるのは、あなたが何を頼んだかであって、実際に何が起きたかではありません。キャッシュ層が古い応答を返しているかもしれません。CDN のルールが、WordPress にリクエストが届く前にファイルをブロックしているかもしれません。あるプラグインが閉じたものを、別のプラグインが開け直しているかもしれません。「自分のサイトは何を公開しているのか」という問いに正直に答える唯一の方法は、見知らぬ他人と同じやり方でサイトに尋ねてみることです。

幸い、ログインまわりで確認すべきものの一覧は短くて済みます。ボットはどの WordPress サイトでも、同じ一握りのアドレスを探します:

アドレス 開いている場合に明かされるもの
/wp-login.php、/wp-admin デフォルトのログインフォーム
/xmlrpc.php 第二のログイン口 (system.multicall による一括推測も可能)
/wp-json/wp/v2/users 投稿者とそのログインスラッグの一覧
/?author=1 /author/login-name/ へのリダイレクト
/wp-sitemap-users-1.xml ログインスラッグを含む投稿者アーカイブの URL

どれも単独では大惨事ではありません。しかし組み合わさると、ボットに名前の一覧と、それを試す 2 つの入口を渡すことになります。どれが開いているかがわかれば、正しい順序で塞げます。まず入口、次に名前です。

よくある間違い

  • ログインしたままテストする。 WordPress はログイン中のユーザーにより多くを見せます。プライベートウィンドウか curl を使いましょう。
  • キャッシュされたページをテストする。 設定を変えた直後なら、先にページキャッシュと CDN のキャッシュを削除してください。そうしないと古い応答が表示されます。
  • 最初の緑のランプで満足する。 ログインフォームを閉じても XML-RPC が開いたまま、というのが、私たちが最もよく目にする中途半端な対策です。
  • 完全なセキュリティ監査を期待する。 これらのチェックが対象とするのは侵入経路です。マルウェア、ファイルの変更、古いプラグインについては何もわかりません。

プラグインを使わない方法

ステップ 1 の 5 つの curl コマンドが手作業での方法で、知っておく価値があります。結果は次のように読み取ります:

  • wp-login.php で HTTP/2 200: デフォルトのログインが公開されています。404 なら隠されています。
  • xmlrpc.php から XML-RPC server accepts POST requests only.: エンドポイントが生きています。ログインが受け付けられるかを確かめるには、テスト用アカウントで wp.getUsersBlogs 呼び出しを送る必要があります。
  • /wp/v2/users から "slug" フィールドを含む JSON 配列: ユーザー名が公開されています。401 または空の配列なら閉じています。
  • ?author=1 から Location: /author/name/: 漏えいです。2、3 と続けて試すと、ボットが何人分のユーザーを集められるかがわかります。
  • ユーザーのサイトマップで 200: 投稿者の URL が一覧化されています。

難点は手間と解釈です。変更のたびに繰り返す必要があり、XML-RPC のログインをきちんとテストするには XML を手で組み立てなければなりません。

うまくいかないときは

  • オフにしたのにスキャンで「開いている」と表示される。 ページと CDN のキャッシュを削除して、もう一度スキャンしてください。それでも開いているなら、別のプラグインかサーバーのルールが設定を上書きしている可能性があります。
  • スキャンがサイトにアクセスできない。 ホスティングによっては、サイトが自分自身にリクエストを送ること (ループバック) をブロックしています。ループバックリクエストを許可するようホスティング会社に依頼するか、外部から curl の方法を使ってください。
  • 強化した後もユーザー名が漏れている。 テーマの投稿者ボックスや、SEO プラグインの投稿者サイトマップを確認してください。テーマが表示名を出力している場合は、投稿者の表示名を変更します。

Hushfort なら

攻撃面スキャンは、無料の WordPress セキュリティプラグイン Hushfort Security に含まれています。

攻撃面スキャンは、Hushfort の「攻撃面の強化」パネルにあります。手作業の方法と同じく、実際のリクエストでサイトが実際に公開しているものを測定し、見つかったユーザー名を名指しで一覧表示します。それぞれの検出結果は、それを塞ぐ Hushfort のレイヤーに対応しています:

攻撃面スキャンを作ったきっかけは、ログインページを隠していたにもかかわらず、XML-RPC 経由でパスワードの試行を受け続けたあるストアでした。設定は問題なさそうに見えましたが、開いた入口を示したのは実際のリクエストだけでした。

よくある質問

自分の WordPress サイトをスキャンしても法的に問題ありませんか?

はい。自分のサイトに通常のリクエストを送ることは問題ありません。テストするのは、自分が所有しているか、テストの許可を得ているサイトだけにしてください。

設定を確認するのではなく、実際のリクエストでテストするのはなぜですか?

設定の内容と、キャッシュ、CDN のルール、他のプラグインやテーマの実際の動きが食い違うことがあるからです。実際のリクエストなら、訪問者が実際に受け取るものがわかります。

このチェックでマルウェアや脆弱なプラグインも見つかりますか?

いいえ。確認するのは入口とユーザー名の漏えいです。マルウェアや既知の脆弱性のスキャンには別のツールが必要で、Hushfort はそれらを行いません。

どのくらいの頻度でチェックすべきですか?

プラグインの追加・削除、テーマの変更、サーバーの移転、CDN のルール変更の後です。公開範囲が知らないうちに変わるのは、こうしたタイミングです。

不具合の報告・機能のリクエスト

メッセージは Hushfort の開発チームに直接届きます。

内容の種類

返信にのみ使用します。

これらの情報は返信のためだけに使用します。 プライバシー