ウェブの40%以上がWordPressによって運営されています。しかし、これがこの人気のCMSをハッカーにとって魅力的なターゲットにしています。
ですので、WordPressサイトを運営しているなら、その安全性を確保する必要があります。これは単なる技術的な作業ではなく、ブランドの評判、データ漏洩、ビジネスの継続性など、いくつかの観点からの重要な責任でもあります。
WordPressエコシステムで際立っているツールの一つが、WPScanです。これはWordPress専用に設計されたセキュリティスキャナーです。ニーズに応じて、有料と無料のライセンスがあります。また、Kali Linuxのディストリビューションにプリインストールされています。
したがって、経験豊富なウェブサイト管理者であれ、サイトのセキュリティを向上させたいウェブサイト所有者であれ、WPScanは攻撃者がそれを悪用する前に脆弱性を特定するのに役立ちます。
先に進む前に、非常に重要なことがあります:この文章の目的は、個人や組織がWPScanを効果的に活用してWordPressウェブサイトのセキュリティを強化する手助けをすることです。
このツールは脆弱性を特定するのに非常に強力ですが、適切な許可なしにウェブサイトをスキャンするなどのWPScanの無断使用は、倫理的に問題があるだけでなく、違法でもあることを強調することが重要です。
この情報を共有する目的は、サイト管理者や開発者が自らのウェブサイトを積極的に保護し、データを守り、すべての人のためにより安全なオンライン環境を作り出す力を与えることです。
私たちが扱う内容:
WPScanとは何ですか?
WPScanは、WordPressのインストールに潜む潜在的な脆弱性を特定するのに役立つコマンドラインツールです。古いプラグイン、設定ミス、その他一般的な問題に目を光らせ、ウェブサイトのセキュリティガードのような存在です。
WPScanのユニークな点は、WordPressに焦点を当てていることです。セキュリティ専門家によって維持されているデータベースを使用しており、定期的に更新されており、WordPressのコア、プラグイン、テーマに存在する数千の既知の脆弱性を追跡しています。
WPScanができること
以下は、WPScanがサポートする主な機能です:
-
古いWordPressコアバージョンの検出。
-
プラグインやテーマの脆弱性の特定。
-
ユーザーの列挙(たとえば、ユーザー名の発見)。
-
弱いパスワードのテスト(辞書攻撃の使用)。
-
公開されている機密ファイルの検出(バックアップやデバッグログなど)。
さて、使用可能な最も一般的なコマンドを見ていきましょう。
WPScanを使用してWordPressサイトをスキャンする方法
1. 基本スキャン
基本スキャンは、主要な脆弱性や誤った設定を特定することで、WordPressサイトのセキュリティの概要を提供します。WordPressのコアバージョンを検出し、古い場合にはそれを警告し、SQLインジェクションやクロスサイトスクリプティング(XSS)などのリスクを強調します。
スキャンでは、.sql
や.zip
などの公開可能なバックアップファイルやdebug.log
のようなデバッグファイルが見つかるかもしれず、これらはデータベースの資格情報やサーバーパスなどの機密情報を公開する可能性があります。
また、Strict-Transport-Security(HSTS)やContent-Security-Policy(CSP)などの欠落または適切に構成されていないHTTPセキュリティヘッダーを検出し、プロトコルのダウングレード攻撃や不正なスクリプトの実行に対する保護に重要です。
公開メタデータで特定された場合、サイトのファイル構造や潜在的に脆弱なプラグインやテーマを公開するオープンディレクトリも警告される可能性があります。
これらの調査結果は、基本的なセキュリティの欠陥に対処する出発点を提供します。
wpscan --url http://yourwebsite.com
このコマンドを実行すると、ターミナルには次のように表示されます:
2. ユーザーの列挙
ユーザーの列挙は、WordPressサイト上のユーザー名を特定するプロセスです。これらのユーザー名を知ることで、攻撃者が特定のアカウントを狙って総当たり攻撃を行うことができます。
ユーザーを列挙するには、次のコマンドを実行します:
wpscan --url http://yourwebsite.com --enumerate u
出力にはユーザー名が表示されます:
デフォルトのユーザー名(たとえばadmin
など)が見つかった場合には、それらを一意かつ安全なものに置き換える必要があります。
ユーザー名のベストプラクティスについていくつか紹介します:
-
デフォルトの名前を避ける:
admin
やuser
などのデフォルトのユーザー名を、予測しにくいユニークなものに置き換えてください。 -
脆弱なユーザー名を変更する: ユーザー名を変更するには、管理者権限を持つ新しいユーザーを作成し、投稿やコンテンツの所有権を移行してから古いユーザーを削除します。
-
役割ベースのユーザー名を慎重に使用する: アカウントを役割に基づいて命名するのを避ける(たとえば
editor
、manager
)。これらは狙いやすい対象になります。 -
ログインロックアウトを実装する: 安全なユーザー名と組み合わせて、繰り返し失敗したログイン試行後にアカウントをロックするプラグインを使用します。
-
二要素認証(2FA)を有効にする: 2FAを追加することで、ユーザー名が推測されてもアカウントが安全であることを確認できます。
3. プラグインとテーマの確認
プラグインとテーマにはセキュリティの問題があることがあります。WPScanは、インストールされているすべてのプラグインとテーマ、および関連する脆弱性を一覧表示できます。
プラグインの場合、次のように実行します:
wpscan --url http://yourwebsite.com --enumerate p
出力は次のようになります:
テーマの場合、次のように実行します:
wpscan --url http://yourwebsite.com --enumerate t
出力は次のようになります:
結果で旧バージョンや既知の脆弱性を探し、それらのコンポーネントをすぐに更新または置き換えてください。
プラグインとテーマの一般的なセキュリティ問題を見てみましょう。
まず、クロスサイトスクリプティング(XSS)があります。プラグインやテーマでの安全でない入力処理は、攻撃者が悪意のあるスクリプトを挿入し、ユーザー情報を盗んだり管理者セッションを乗っ取ったりする可能性があります。XSSの脆弱性があるセキュリティの甘いWordPressサイトでは、攻撃者がセッションクッキーを盗み、未承認の管理者アクセスを得たり、悪意のあるリダイレクトを挿入したり、ユーザーをフィッシングサイトに誘導したり、欺瞞的なコンテンツを表示したりして、ユーザーに機密情報を提供させる可能性があります。
さらに、SQLインジェクションもあります。不適切に作成されたプラグインやテーマは、攻撃者がデータベースクエリを操作して、機密データを公開したりサイトを破損したりする可能性があります。SQLインジェクションの脆弱性は、機密データをダンプしたり、認証をバイパスしたり、データを変更したり削除したりするために悪用されることがあります。
一部のプラグインやテーマには、悪意のあるコードが含まれていることがあります。これは意図的なものか、セキュリティが不十分なためです。このようなコードは、攻撃者にあなたのサイトへの不正アクセスを許可するもので、これをバックドアと呼びます。バックドアがインストールされると、持続的なアクセスが許可され、任意のファイルのアップロードが可能になり、サイトの整合性が損なわれ、機密データが盗まれる可能性があります。
また、リモートコード実行 (RCE)という脆弱性もあります。これは、攻撃者がサーバー上で任意のコードを実行できるようにするもので、しばしばサイトやサーバーの完全な制御につながります。攻撃者がRCEアクセスを取得すると、管理者ユーザーを作成したり、データを抽出したり、さらなる攻撃を仕掛けたり、特権の昇格を行ったりできます。
ベストプラクティス:
-
プラグインとテーマは常に最新バージョンに更新してください。
-
使用していない、または非アクティブなプラグインやテーマは削除してください。これらは依然としてリスクをもたらす可能性があります。
-
プラグインとテーマは信頼できる、評判の良いソースからダウンロードし、活発なメンテナンスの履歴があることを確認してください。
-
セキュリティプラグインを使用して、プラグインやテーマのファイルの変更を監視し、疑わしい活動を検出することを検討してください。
4. パスワードテスト
WPScanは、ワードリストを使用してブルートフォース攻撃を試みることで弱いパスワードをテストできます。
wpscan --url http://yourwebsite.com --passwords /path/to/passwords.txt
そしてこれがあなたのコマンドライン上の出力です:
ブルートフォース攻撃とは何ですか?
ブルートフォース攻撃は、攻撃者が正しいものが見つかるまで可能な組み合わせを徹底的に試行することでパスワードを推測する方法です。よく使われるパスワードのコレクションを含むファイルであるワードリストと組み合わされると、ブルートフォース攻撃はより迅速かつ効率的になります。
典型的なワードリストには次のようなものが含まれる場合があります:
- 123456や
password
、qwerty
などの - Spring2024!や
welcome123
などのような - 以前のデータ漏えいからの漏洩したパスワードなどが含まれることがあります。
この種の攻撃をシミュレートすることで、WPScanは弱いパスワードを使用しているアカウントを特定し、積極的に脆弱性に対処することができます。
弱いパスワードはブルートフォース攻撃を容易にし、迅速にします。短いまたは予測可能なパスワードは数秒で推測される可能性がありますが、長い複雑な要素を持つパスワードは指数関数的に解読が難しくなります。
強力なパスワードの作成方法
強力なパスワードは、総当たり攻撃に対する最初の防御ラインです。強力なパスワードの主な特徴は次のとおりです:
-
長さ:少なくとも12〜16文字であること。
-
複雑性:大文字と小文字の両方の文字、数字、特殊文字を混在させること。
-
一意性:複数のアカウントで同じパスワードを再利用しないこと。
-
予測不可能性:辞書の単語、一般的なフレーズ、誕生日などの個人情報を避けること。
強力なパスワードを生成するための戦略
強力なパスワードを作成するために取ることができるさまざまな手段があります。まず、パスワードジェネレーターを使用します。LastPassやBitwardenなどのツールを使用すると、非常に複雑なパスワードを作成および保存できます。
通常のパスワードではなく、パスフレーズを使用することも重要です。ランダムで関連のない単語に数字や記号を組み合わせたもの、例えば Sky#Tree!Motorbike12
などを使用します。
最後に、攻撃者に簡単に推測される可能性のあるパターンを避けます。連続する文字やキーボードのパターン(例:abcdef
やqwerty
)を使用しないでください。
パスワードを管理するためのツールの使用
強力なパスワードの管理は難しい場合があります。パスワードマネージャーは、資格情報を安全に保存し、自動入力することでこれを簡素化します。人気のオプションには次のようなものがあります:
-
Bitwarden
-
LastPass
これらのツールには、再利用されたり弱いパスワードを検出するためのパスワード監査機能などもあります。
二要素認証(2FA)を使用する
二要素認証(2FA)は、ユーザーがパスワード以外の第二の要素で自分の身元を確認することを要求することで、追加のセキュリティ層を追加します。これには次のようなものが含まれます:
-
メールやSMSで送信されるワンタイムコード。
-
Google AuthenticatorやAuthyなどのツールからのアプリ生成コード。
-
指紋や顔認識などの生体認証。
攻撃者がブルートフォースでパスワードを推測した場合でも、2FAは二次確認なしにはアカウントにアクセスできなくします。この追加のステップにより、ブルートフォース攻撃は実用的ではなくなります。攻撃者は、あなたの2FAデバイスや方法も妥協する必要があるからです。
WordPressでの2FAの実装方法
-
WordPressのプラグイン、Google Authenticatorなどをインストールしてください。
-
特に管理者を含むすべてのユーザーアカウントに2要素認証(2FA)の有効化を必須としてください。
-
ユーザーが2FAデバイスへのアクセスを失った場合のために、バックアップコードや復旧オプションを提供してください。
-
2FAがすべてのユーザーロールで信頼性を持って機能するかどうかをテストし、それを義務化する前に確認してください。
パスワードの適切な管理の重要性
強力なパスワードを使用し、2FAを実装することで、総当たり攻撃の効果を大幅に低減できます。
WPScanのパスワードテスト機能を使用して、弱い資格情報を特定できます。これは、プロアクティブなパスワードの適切な管理と追加のセキュリティレイヤーがWordPressサイトを安全に保つために重要であることを強調しています。
WPScanの結果をどうするか
WPScanのレポートは、サイトのセキュリティに関する具体的な洞察を提供します。以下に情報を活用する方法を示します:
まず、WordPressコア、プラグイン、テーマを更新してください:すべてを最新の状態に保ち、脆弱性を修正してください。
次に、構成の問題に対処してください:設定ミス、安全でないHTTPヘッダー、その他の警告を修正してください。
ここに適用できるリメディエーションの例がいくつかあります:
-
ディレクトリインデックス: WPScanがオープンディレクトリを検出した場合は、次の行を
.htaccess
ファイルに追加してディレクトリの閲覧を無効にします:Options -Indexes
-
ファイルアクセス許可:
wp-config.php
などの重要なファイルが読み取り専用であることを確認するには、次のコマンドを使用して440
または400
のパーミッションを設定します:chmod 400 wp-config.php
また、すべてのユーザーアカウントを強化する必要があります。これにはいくつかの方法があります:
-
弱いパスワードの更新: すべてのユーザーアカウントに強力で一意のパスワードを使用します(ヒントについてはパスワードテストセクションを参照してください)。
- 未使用のアカウントの削除: 管理者権限を持つ非アクティブなアカウントを削除します。
-
予測可能なユーザー名を変更:
admin
などのユーザー名をより明らかでないものに変更します。
機密ファイルを確実に保護: WPScanがdebug.log
のような公開ファイルを検出した場合、それらを削除または保護します。不要なファイルや古いバックアップを削除します。
保持する必要があるファイルは、Webルートの外のディレクトリに移動します。また、.htaccess
を使用して、Deny
およびAllow
ルールを使用して機密ファイルへのアクセスをブロックすることもできます:
<Files wp-login.php>
Order Deny,Allow
Deny from all
Allow from 123.456.789.000
</Files>
WPScanの制限
WPScanは強力なツールですが、いくつかの制限があります。これらを認識して、WPサイトを保護するための他の対策を講じることができます。
1.既知の脆弱性のみ
WPScanは既知の脆弱性のデータベースに依存しているため、ゼロデイ攻撃やカスタム脆弱性を検出することはできません。
この問題を緩和する方法についてのいくつかのヒント:
-
情報を収集: WordPressセキュリティブログ、CVEやWPVulnDBなどの脆弱性データベース、新興脅威についてのコミュニティフォーラムを監視します。
-
Webアプリケーションファイアウォール (WAF) を使用する: Cloudflare や Sucuri のようなツールは、疑わしい活動や未知の脆弱性の悪用を試みる行為をブロックできます。
-
手動によるセキュリティレビューを実施する: 定期的にサイトをレビューし、特に
wp-config.php
やデータベースのような重要なファイルにおいて、異常な動作や不正な変更がないか確認します。
2. リアルタイム保護がない
WPScan は診断ツールであり、ファイアウォールや侵入検知システムではありません。リアルタイム保護を実現するためには、WPScan を他のツールと組み合わせることをお勧めします。
取るべきいくつかのステップは次のとおりです:
-
セキュリティプラグインをインストールする: 特定のセキュリティプラグインを使用して、継続的な監視、マルウェアスキャン、およびファイアウォール保護を提供します。
-
アクティビティログを監視する: 疑わしいログイン試行、ファイル変更、不正なユーザーアクションを特定するためにアクティビティトラッキングを設定します。
3. リソース集中型
多くのプラグインやテーマを備えた大規模なサイトのスキャンは時間がかかる場合があり、サーバーパフォーマンスに影響を与えることがあります。
これを軽減するためのさまざまな戦略があります。たとえば、トラフィックが少ない時間帯にスキャンをスケジュールして、サイト訪問者への影響を最小限に抑えることができます。また、本番環境ではなくサイトのステージングコピーでスキャンを実行することもできます。
4. 学習曲線
WPScanはコマンドラインツールであり、技術的に未熟なユーザーには抵抗があるかもしれません。ただし、ドキュメントは優れており、練習すれば習熟することができます。
CLIが難しい場合は、GUIベースのスキャンとレポートを提供するセキュリティプラグインと組み合わせてWPScanを試してみてください。
WPScanの使用に関するベストプラクティス
WPScanを最大限に活用するには、サイト固有のニーズに合わせてその使用法を調整し、結果のモニタリングのための堅牢な戦略を確立する必要があります。効果を最大化する方法は次の通りです。
サイトに適したスキャンを選択
WPScanには、基本的なスキャンからプラグイン、テーマ、ユーザーアカウントの脆弱性チェックまでさまざまなスキャンオプションが用意されています。適切なスキャンを選択するには、管理するサイトのタイプと扱うデータの機密性に応じます。
小規模でトラフィックが少ないサイトの場合:
-
WordPressのコア、プラグイン、テーマの更新と脆弱性をチェックするために、基本的なスキャンを優先してください。
-
スキャンは毎月または主要な更新後に実施してください。
-
弱いパスワードやデフォルトのユーザー名が疑われる場合は、ユーザー列挙(
--enumerate u
)を使用してください。
中規模ビジネスサイト:
-
基本的なスキャンに加えて、すべてのコンポーネントが安全であることを確認するために、プラグインとテーマの列挙(
--enumerate p,t
)を含めてください。 -
新たな脅威に先手を打つために、毎週スキャンを実施してください。
-
WPScanをアクティビティログプラグインと組み合わせて、ユーザーのアクションやファイルの変更を追跡してください。
高トラフィックまたはeコマースサイト:
-
ユーザー列挙(
--enumerate u
)、ファイル列挙(--enumerate f
)、およびパスワードブルートフォーステスト(許可されている場合)を含む包括的なスキャンを実施してください。 -
リスクを最小限に抑えるための毎日または週次のスキャン。
-
管理者アカウントに2要素認証(2FA)、Webアプリケーションファイアウォール(WAF)、およびセキュリティヘッダーなどの追加対策を実装して、サイトを強化してください。
機密データを取り扱うサイト:
-
公開されたファイルや構成の脆弱性など、利用可能なすべてのスキャンを優先してください。
-
セキュリティプラグインを使用してリアルタイムの監視を行い、週次スキャンを実施してください。
-
本番環境に影響を与えることなくセキュリティ設定をテストするためにステージング環境を使用してください。
すべてのスキャンを使用すべきか?
WPScanが提供するすべてのスキャンを使用することが有益に思えるかもしれませんが、様々な要素を考慮する必要があります。
まず、サイトの規模とリソースについて考えてください。小規模なサイトでは、すべてのスキャンを実行することは過剰でリソースを消費する可能性があります。
サイトの最も可能性の高い脆弱性に対応するスキャンに焦点を当てる必要があります。例えば、eコマースサイトは、徹底的なファイルの列挙よりもユーザーおよび支払いのセキュリティを優先すべきです。
コンプライアンス要件も考慮することが重要です。GDPRなどの規制の対象となっている場合は、データ保護に関連する脆弱性をスキャンして対処することを確認してください。
効果的な結果のモニタリング方法
WPScanの結果をモニタリングすることは重要です。これにより脆弱性を修正するだけでなく、時間の経過とともに変更を追跡し、用心するシステムを作成するのに役立ちます。
レポートの設定
スキャン結果をファイルに保存するには、--output
フラグを使用できます。
wpscan --url http://example.com --output /path/to/report.txt
その後、定期的にレポートを確認し、以前のスキャンと比較して再発する問題や新しい脆弱性を特定します。
アクションプランの作成
脆弱性を深刻度(例:重大、中程度、低)に基づいて分類するのは良い考えです。
これにより、既知の脆弱性を持つ古いプラグインなどの重大度の高い問題に直ちに対処できます。その後、ファイルの権限調整や軽微な設定変更などの低優先度のタスクを、定期的なメンテナンスのためにスケジュールに組み込むことができます。
時間の経過とのトレンドの追跡
スプレッドシートやプロジェクト管理アプリ(例:Trello、Asana)などのツールを使用して、脆弱性、修正、およびフォローアップアクションを記録します。
再発する問題を分析し、頻繁に発生するプラグインの脆弱性などのパターンを特定し、問題のあるコンポーネントを取り替えることを検討してください。
通知の自動化
クーロンジョブを使用してスキャンをスケジュールする場合は、即座に結果を確認するためにメールアラートや通知を設定してください。
リアルタイムモニタリング機能を備えたセキュリティプラグインを使用して、WPScanのチェック間に疑わしい活動を通知するようにしてください。
チームとのコミュニケーション:
開発者やサイト管理者など関係者とレポートを共有し、潜在的な脆弱性について全員が認識するようにしてください。
重大な脆弱性が発見された場合の即時対応のためのプロトコルを確立することも重要です。
サイト固有のニーズに基づいてスキャンを選択し、結果のモニタリングに構造化されたアプローチを実装することで、WPScanを効果的に使用できます。また、リスクプロファイルにツールを合わせ、時間の経過とともに脆弱性を追跡し、その結果をより広範なセキュリティ戦略に統合してください。
このアプローチにより、サイトのセキュリティポストを向上させるだけでなく、リソースの使用と労力を最小限に抑えながら最大限の保護を提供できます。
結論
WordPressサイトを管理している人にとって、WPScanは非常に価値のあるツールです。脆弱性を特定し、サイトのセキュリティを強化するための明確で具体的な推奨事項を提供します。
WPScanをワークフローに統合し、ベストプラクティスに従うことで、攻撃リスクを軽減し、WordPressサイトを安全に保つことができます。セキュリティは継続的な取り組みであり、WPScanなどのツールを活用することで、潜在的な脅威に先んじることが容易になります。
Source:
https://www.freecodecamp.org/news/how-to-use-wpscan-to-keep-your-wordpress-site-secure/