ファイル インクルージョン攻撃とは何ですか?

公開: 2023-03-31

どのツールも善意または悪意を持って使用することができ、ファイル インクルードも例外ではありません。 ファイル インクルードは、サイト全体でコードの保守と機能の拡張を容易にするプログラミング方法です。 ファイル インクルージョン攻撃は、PHP がファイル インクルージョンを使用する方法を悪用します。これは、多くの個別のファイルからコードを結合して実行し、単一の Web ページを作成する有効な方法です。 PHP は WordPress が使用する言語であるため、WordPress やその他の PHP アプリケーションは、適切なセキュリティ対策が破られている、不完全である、または存在しない場合に、ファイル インクルージョンの脆弱性が発生する傾向があります。

ファイル インクルージョン攻撃に関するこの完全なガイドでは、ハッカーが貧弱なユーザー入力のサニタイズと検証を悪用してマルウェアを挿入し、不適切な指示を送信して WordPress サイトに侵入する方法を探ります。

WordPress のファイル インクルージョン攻撃がどのように発生するか、および Web サイトを攻撃の被害から守るためにできることを学びます。

ファイル インクルージョン攻撃

ファイル インクルージョンとは何ですか?

ファイル インクルードは、多くのファイルを 1 つのスクリプトまたは Web ページに組み込んで、機能を追加したり、デザイン テンプレートを再利用したり、複数のページでコンテンツを共有したりするための開発手法です。

ファイルのインクルードは絶対に必要です。 開発者は通常、次の目的でそれらを使用します。

  • デザインと機能の一貫性を確保するために、Web サイトのすべてのページに共通のヘッダー ファイルとフッター ファイルを含めます。
  • Web サイトまたは Web アプリケーション全体の主要な機能のスクリプトとライブラリを含めます。
  • データベース接続情報や API キーなど、アプリケーションの設定を含む構成ファイルを含みます。
  • 画像、ビデオ、テキスト、または Web ページ上のその他のコンテンツなどのコンテンツを含みます。
  • URL パラメーターとして渡されたユーザー入力に基づいて動的コンテンツを生成する機能が含まれます。 たとえば、ユーザーは特定の出力を生成するためにフォームを送信する場合があります。

ファイル インクルードの種類

ファイル インクルード手法を使用すると、開発者はファイルとスクリプトを Web ページに静的または動的に追加できます。

静的ファイル インクルードを使用すると、開発者は、Uniform Resource Locator (URL) またはローカル (つまり同じサーバー) に保存されているファイルへのパスを参照することで、複数のページで同じテキストまたはコードを再利用できます。 静的ファイルを含めることにより、テーマは多くの Web ページで同じヘッダー、フッター、またはナビゲーション メニュー コードを使用できます。

動的ファイル インクルードは、実行時にユーザー入力を受け入れます。 ユーザーは、特定のファイルへのパスを渡すことによって、目的の出力を示します。 通常、ユーザー入力は URL またはフォーム送信でパラメーターとして渡されます。 たとえば、ユーザーが言語のドロップダウン選択リストから「英語」を選択すると、URL を/page.php?language=englishのように変更することで、表示中のページの英語版に移動します。 誰かが「 english 」をリモート ファイルの URL に置き換えた場合、これを防ぐためのチェックが行われていない場合、標的のサイトにバックドアやその他のマルウェアとして Web シェルを挿入できる可能性があります。

ファイルインクルージョンは WordPress にどのように実装されていますか?

PHP で記述されたすべての動的 Web アプリケーション (WordPress など) は、ファイル インクルードを安全に使用できます。 PHP で作成されたアプリケーションでは、開発者はincluderequireステートメントを使用してファイル インクルードを実行します。 開発者は両方のステートメントを使用して、ある PHP スクリプトの内容を別の PHP スクリプトに挿入します。 これは、コードがサーバー上で実行される前に発生します。

WordPress コア ファイルのいくつかを見ると、それらの多くは他のコア スクリプトを参照しています。 それらがすべて一緒に読み込まれると、サイトの構造が構築され、訪問者が要求する個々の Web ページが生成されます。 メインのindex.php wp-blog-header.phpを参照し、WordPress 環境とテーマ テンプレート (それぞれwp-load.phptemplate-loader.phpをロードします。

WordPress の index.php ファイルは、ファイル インクルードを使用します。

WordPress コアに加えて、プラグインとテーマもファイル インクルードを使用して必要なタスクを実行します。 ただし、何万もの WordPress プラグインが利用可能であり、そのすべてが WordPress コアほど十分にテストされているわけではありません.

ファイルのインクルージョンは、開発者がファイルを適切に保護しない場合、重大なセキュリティ リスクをもたらします。 使用しているコードがユーザー入力を検証およびサニタイズしない場合、ハッカーが悪用できます。 彼らはそれを使用してマルウェアをインストールし、機密情報 (おそらくあなたやあなたの顧客) を盗むことができます!

ファイル インクルージョン攻撃とは何ですか?

ファイル インクルージョン攻撃には、ローカル ファイル インクルージョン (LFI) またはリモート ファイル インクルージョン (RFI) の 2 種類があります。

ファイル インクルージョン攻撃は、より広範なインジェクション攻撃クラスの一部です。 これには、SQL インジェクション (SQLi)、クロスサイト スクリプティング (XSS)、およびコマンド インクルージョン攻撃が含まれます。 ハッカーは、入力の脆弱性を悪用して、バッファ オーバーフロー攻撃など、他の種類の攻撃を行うことができます。

ローカルおよびリモートのファイル インクルージョン攻撃

特定の機能を有効にするために動的ファイル インクルージョンに依存する Web サイトおよび Web アプリケーションは、リモート ファイル インクルージョン攻撃とローカル ファイル インクルージョン攻撃の両方にさらされる可能性があります。

ローカル ファイル インクルージョン (LFI)

ローカル ファイル インクルージョン攻撃は、標的の Web サイトまたは Web アプリケーションと同じサーバーにあるファイルを挿入する可能性があります。 LFI 攻撃により、通常は制限されているファイルにアクセスできることがよくあります。 LFI 攻撃では、対象のローカル アプリケーション サーバーに含まれるファイルがすでに存在している必要があります。 LFI 攻撃では、悪意のある人物が重要なファイルを読み取ったり、より機密性の高い情報にアクセスしたり、任意のコマンドを実行したりできます。

ローカル ファイル インクルージョン攻撃により、誰かが標的の Web サイト外の機密データにアクセスできるようになる可能性もあります。 これには、 /etc/passwdのサーバー構成ファイルや、 wp-config.phpなどの別の Web サイトの構成ファイルが含まれます。 ただし、対象/etc/passwdなるファイルは権限のないユーザーが読み取れるようにする必要があることに注意してください。見ることができます。

ファイル システムをナビゲートするために、攻撃者はディレクトリ トラバーサルを使用します。これは、 ../../../などのディレクトリ パス トラバーサル シーケンスを操作して、現在の作業ディレクトリの外部にあるファイルにアクセスする手法です。

リモート ファイル インクルージョン (RFI)

リモート ファイル インクルージョン攻撃は、別のサーバーでホストされているファイルを呼び出す Web サイトやアプリケーションを標的にします。 攻撃者は、リモート ファイル インクルージョンを悪用して、別の場所にホストされている悪意のあるコードを利用できます。 攻撃対象のサーバーには脆弱性が存在する必要がありますが、攻撃者はそれを使用して、別の場所にホストされている悪意のあるコードを実行します。

リモート ファイル インクルージョン攻撃では、ハッカーは Web アプリケーションの「動的ファイル インクルード」コマンドを利用します。 ハッカーは、URL やパラメーター値などのユーザー入力を受け入れる Web アプリケーションを悪用し、それらを適切なサニタイズなしで「ファイル インクルード」メカニズムに渡すことができます。 このタイプの脆弱性では、攻撃者は Web アプリケーションを悪用して、悪意のあるスクリプトを含むリモート ファイルを含めることができます。

WordPress のファイル インクルージョン攻撃が発生するのはなぜですか?

WordPress サイトはインターネットの 43% を占めているため、攻撃者にとって大きな標的となっています。 当社の 2022 年版 WordPress 脆弱性年次報告書は、昨年発見されたすべての WordPress 脆弱性の 90% 以上がプラグインとテーマにあったことを示しています。 通常、20 から 50 のプラグインで少なくとも 1 つの新しいセキュリティ上の欠陥が毎週報告されています。

最近、セキュリティ研究者は、人気のある OceanWP テーマにファイル インクルージョンの脆弱性を発見しました。 OceanWP には 50 万人以上のアクティブ ユーザーがいます。 (これは、毎週の WordPress 脆弱性レポートで報告されています。) OceanWP は脆弱性に迅速にパッチを適用しましたが、何百万もの WordPress サイトがまだ古いコードを使用している間に、ハッカーが脆弱性を悪用する時間がありました。

毎週水曜日に受信ボックスに配信される毎週の WordPress 脆弱性レポートを入手してください。
今すぐ購読する

WordPress ファイル インクルージョン攻撃を検出する方法

Web サイトの速度を大幅に低下させる可能性があるサービス妨害攻撃や、人々を Web サイトから不正なリソースに誘導する悪意のあるリダイレクトとは異なり、ファイル インクルージョン攻撃は検出が困難です。 この理由は簡単です。 ハッカーは、ファイル インクルードをエントリ ポイントとして使用して、マルウェアをアップロードし、さらなる攻撃を実行します。 ファイルの包含は、より目に見える損傷への静かな道です。 そのため、ハッカーが悪意のあるコードを Web サイトに挿入したり、機密情報にアクセスしたりしても、ほとんど気付かない可能性が高くなります。

これにより、重要な結論が得られます。 Web サイトのセキュリティは、攻撃面を小さくして強化することから始めるべきです。 これにより、ハッカーが、ファイル インクルージョン攻撃、SQL およびコマンド インジェクション、クロスサイト スクリプティング (XSS) など、インジェクション攻撃の原因となる入力の脆弱性を悪用するのを防ぐことができます。

WordPress ファイルインクルージョン攻撃を防御する方法は?

WordPress を標的とするサイバー攻撃の増加に伴い、WordPress Web サイトのセキュリティはこれまで以上に重要になっています。 WordPress のファイル インクルージョン攻撃を防御するには、入力の脆弱性を悪用したり、任意のコードを実行したりする可能性を制限する多面的なアプローチが必要です。 これは、プロアクティブおよびリアクティブなセキュリティ対策を組み合わせて採用することで実現できます。

ファイル インクルージョン攻撃から Web サイトを保護するための WordPress のセキュリティに関する推奨事項のトップ 3 を次に示します。

すべてのソフトウェアを最新の状態に保つ

WordPress コア、テーマ、プラグイン、拡張機能を含むすべてのソフトウェアを最新の状態に保つことは、サイトの攻撃対象領域を減らすために重要です。 新しい脆弱性が毎日出現するため、ハッカーにそれらを悪用する機会を与えないでください。 セキュリティ パッチをインストールし、利用可能になったらすぐに更新します。

自分で定期的に更新する習慣を身に付けるか、自動更新を有効にして、Web サイトで脆弱なコードが実行されないようにします。 iThemes Security Pro は、WordPress のコア、プラグイン、およびテーマの更新を処理できます。

iThemes Security Pro は、Web サイトが使用しているソフトウェアの新しいバージョンを自動的にスキャンします。 そのバージョン管理システムにより、すべてのセキュリティ パッチとアップデートが利用可能になるとすぐにインストールされます。 その上、iThemes は、サーバー インフラストラクチャで古いソフトウェアを実行している場合にも警告を発します。 たとえば、サポート終了日を過ぎた PHP バージョンや脆弱な MySQL サーバーを使用している場合、iThemes Pro は警告を表示します。

管理下に複数の WordPress サイトがある場合、iThemes Sync Pro はそれらすべてを管理する単一のインターフェイスを提供します。 Sync は、高度なアップタイム モニタリングと SEO フィードバックも提供します。

PHP でのリモート ファイル インクルージョンの無効化

PHP 環境でallow_url_fopenオプションが有効になっている場合、Web サイトは外部 URL からリモート ファイルを参照できます。 これにより、リモート ファイル インクルージョン攻撃のリスクが高まる可能性があります。 allow_url_fopen無効にすると、誰かが WordPress Web サイトのリモートの場所からロードされた悪意のあるコードを実行する可能性が効果的に排除されます。

PHP グローバル構成でallow_url_fopen無効にするか、個々の Web フォルダー用に作成されたローカルの.user.iniファイルまたはphp.iniファイルでallow_url_fopen0に設定することで、allow_url_fopen を無効にすることができます。 以下に示すように、 phpinfo()関数を使用して簡単な PHP 情報ページを作成することにより、PHP 環境でオプションが無効になっているかどうかを確認できます。

PHP 環境の設定で allow_furl_open を無効にすることで、ファイル インクルージョン攻撃をブロックできます。

WordPress セキュリティ ヘッダーを実装する

Content Security Policy (CSP) や Set-Cookie などの HTTP 応答ヘッダーは、WordPress Web サイトへのファイル インクルードやその他のインジェクション攻撃に対する防御レイヤーを追加できます。

WordPress セキュリティ ヘッダーを使用すると、信頼できるソース、スクリプト、およびロードできるその他のコンテンツのリストを作成することで、リモート ファイル インクルージョンやクロスサイト スクリプティング (XSS) 攻撃が発生する可能性があるベクトルを削減またはブロックできます。 他のすべてのソースは拒否されます。 さらに、HTTP 応答ヘッダーは、クロスサイト リクエスト フォージェリ (CSRF) とクリックジャッキングに対する保護を追加するのに役立ちます。

iThemes Security Pro でインジェクション攻撃から WordPress サイトを保護

SQL およびコマンド インジェクションに加えて、ファイル インクルージョン攻撃は、WordPress サイトのセキュリティを標的とする最も一般的な攻撃ベクトルになります。 WordPress は高レベルのアプリケーション セキュリティを証明していますが、高度にカスタマイズされたサイトと貧弱なセキュリティ プラクティスが組み合わさると、WordPress Web サイトが入力の脆弱性を悪用するインジェクション攻撃にさらされる可能性があります。

毎日、増え続ける WordPress プラグインとテーマで新しい脆弱性が発見されています。 また、通常は迅速にパッチが適用されますが、タイムリーな更新が行われず、古いソフトウェアに依存しているため、WordPress Web サイトがハッカーの簡単な標的になる可能性があります. 今日、Web サイトのセキュリティはかつてないほど重要になっています。 サイバー攻撃の増加は、最も用心深い Web サイトの所有者でさえ、サイトを保護するための積極的な対策を講じなければ、ハッカーの犠牲になる可能性があることを意味します。

iThemes Security Pro は強力な WordPress セキュリティ ソリューションであり、WordPress の最高のセキュリティ プラクティスを採用して、最も巧妙なサイバー攻撃から Web サイトを保護することができます。 高度なファイル整合性監視、脆弱性スキャン、および自動攻撃軽減機能を備えた iThemes Security Pro は、WordPress サイトを保護するための効果的で信頼できる方法を探している場合に最適です.