リモートコード実行:WordPressユーザーのためのガイド
公開: 2021-04-28Webサイトのセキュリティを真剣に考えている場合は、リモートでコードが実行される脆弱性の危険性と、それらに対抗する方法について学ぶときが来ました。
リモートコード実行(RCE)という用語は、いくつかの異なるハッキング手法とサイバー攻撃を指しますが、それらにはすべて1つの大きな共通点があります。 RCEは、コードインジェクションと呼ばれることもあり、ハッカーがコンテンツ管理システムとしてWordPressを実行しているサイトを含む、あらゆる種類のWebサイトを侵害するためのますます一般的な方法です。
このガイドでは、リモートコード実行攻撃がどのように見えるか、およびそれを回避するために必要な正確な手順について詳しく説明します。 見てみましょう。
リモートコード実行(RCE)攻撃とは何ですか?
リモートコード実行(RCE)は、ハッカーが他の誰かが所有するコンピューターまたはデータベースにアクセスして変更する能力を与える脆弱性の一種です。 RCE攻撃中、ハッカーはマルウェア(任意の悪意のあるソフトウェア)を使用してサーバーまたはコンピューターを追い越します。
リモートコード実行攻撃は、ハードウェア所有者の権限なしに実行され、データが世界のどこに保存されているかは関係ありません。
RCE攻撃の説明
シロアリ感染のようなリモートコード実行攻撃について考えると役立つ場合があります。
- シロアリが家の下を掘ります。
- 住宅所有者はそれを知りません、そして彼らが彼らがしようとしている損害について知っていたならば、間違いなくシロアリを招待しなかっただろう。
- シロアリは家が立つのをやめるまで家の土台を食べます。
比喩はRCE攻撃のしくみとまったく同じではありませんが、RCE攻撃は実際にはもっと悪いです。 あなたの家(またはその中に)にいる必要があるシロアリとは異なり、ハッカーはどこからでもあなたのウェブサイトにアクセスできます。
実際、ハッカーは脆弱なサーバー上であらゆる種類の悪意のあるコードを実行する可能性があるため、RCE攻撃は非常に危険です。 熟練したRCEハッカーがWordPressサイトにアクセスした場合に、そのサイトに与える可能性のある損害に制限はありません。
リモートコード実行の例
2018年、Microsoftは、ソフトウェアプログラムExcelに見られるリモートコード実行の脆弱性を公開しました。 攻撃者はこの脆弱性を悪用して、現在のユーザーのコンテキストで任意のコードを実行する可能性があります。
現在のユーザーが管理ユーザー権限でログオンしている場合、攻撃者が影響を受けるシステムを制御する可能性があります。 その後、攻撃者はプログラムをインストールする可能性があります。 データを表示、変更、または削除する。 または、完全なユーザー権限で新しいアカウントを作成します。 システムでのユーザー権限が少なくなるようにアカウントが構成されているユーザーは、管理ユーザー権限で操作するユーザーよりも影響が少ない可能性があります。

さまざまな種類のリモートコード実行とは何ですか?
RCEハッキングをよりよく理解するには、さまざまな種類のリモートコード実行に注意する必要があります。
SQLインジェクション
WordPress Webサイトは、MySQLデータベースを使用して動作します。 SQLインジェクションは、攻撃者がWordPressデータベースとすべてのWebサイトデータにアクセスしたときに発生します。
SQLインジェクションを使用すると、攻撃者は新しい管理者レベルのユーザーアカウントを作成して、ログインしてWordPressWebサイトへのフルアクセスを取得できる可能性があります。 SQLインジェクションを使用して、悪意のあるWebサイトやスパムWebサイトへのリンクなどの新しいデータをデータベースに挿入することもできます。
多くのRCEの脆弱性は、WordPressSQLステートメントの作成方法を攻撃します。 たとえば、アプリケーションがデータベースのユーザー名を読み取る必要がある場合、開発者はユーザー名の検索に次のようなコードを使用するという間違いを犯す可能性があります。
SELECT * FROM users WHERE name = 'username'
しかし、RCEに関連するこのようなクエリの問題は何ですか? WordPressサイトへの訪問者は誰でも、悪意のあるハッカーであっても、ユーザー名を入力できます。 例として、ハッカーは '1” 1' = –、OR 'と入力すると、次のようなSQLステートメントが生成されます。
SELECT * FROMユーザーWHEREname = '1' = '1'-'OR' '
アプリケーションがデータベース全体でサイトのユーザー名を検索し、空白の名前がある各フィールドを選択するとします。1が1の場合、後者は常に真です。 最終的に発生するのは、ハッカーにSQLデータベース内のすべてのユーザー名が提供されることです。
ただし、SQLインジェクションの危険性は、このようなデータ漏洩だけではありません。 攻撃者は、SQLデータベースに多数のコマンドを送信する可能性もあります。これにより、重要なWordPressサイトデータが上書きまたは削除される可能性があります。
クロスサイトスクリプティング
クロスサイトスクリプティングは、RCEのもう1つの脆弱性です。 サーバーではなく、サイトの訪問者に直接影響します。 クロスサイトスクリプティング(XSS)は、WordPressサイトのクロスサイトの脆弱性を悪用することによって実行されるマルウェア攻撃の一種です。 実際、XSSの脆弱性を持つWordPressプラグインが非常に多いため、WordPressサイトがハッキングされる最も一般的な方法です。
各Webページ内で、コードとコンテンツは同じ方法でレンダリングされます。 ただし、Webブラウザーは、常にスクリプトタグでラップされているため、コンテンツとは別にコードを設定できます。 これが意味するのは、適切なフィルターがないと、攻撃者はテキストを入力できるWebページの任意の場所に悪意のあるコードを詰め込むことができるということです。 適切なフィルターがないと、攻撃者は、テキストの入力を許可するWebページの任意の場所に悪意のあるコードを詰め込む可能性があります。 あなたは守られていますか?
これには、検索バー(多くの場合、WordPressサイトのすべてのページにあります)、コメントセクション、さらには表示名などの脆弱なフィールドが含まれます。
この攻撃が実行されると、Webサイトを実行しているブラウザが悪意のあるコードを実行します。
クロスサイトスクリプティングは、攻撃者のブラウザでのみ実行された場合、セキュリティの問題ほど大きくはありません。 ただし、ブログ投稿のコメントセクションなど、悪意のあるコードが一般に公開されている場合は、コンテンツを閲覧するすべての訪問者にも影響を及ぼします。
コードをリモートで実行するこの危険な機能により、攻撃は簡単にパスワードを盗み、正当なユーザーになりすますことができます。
また、クレジットカードの詳細やPayPalアカウント情報など、そのユーザーの個人情報を表示できる可能性もあります。
ディレクトリトラバーサル
この攻撃は、アプリケーションやWordPressサイトの訪問者を対象としていません。 代わりに、主なターゲットは実際のWebサイトです。
RCEの脆弱性は、サイトファイルがWebサイトサーバーのファイルシステムに保存される方法を悪用します。
通常、データは/ home / user / public_htmlなどの標準ディレクトリに保存されます。 ディレクトリ内のスクリプトは、/ home / user / public_html / wp-admin /index.phpを直接参照するwp-admin / index.phpなどの相対パスを使用してファイルにアクセスします。
スクリプトが現在のディレクトリの外にあるファイルにアクセスするように構成されている場合、スクリプトは「../」を含めるだけでこれを実現します。 これは、現在のディレクトリの1つ上のディレクトリを指します。
たとえば、ディレクトリパターン/home/user/public_html/../は/ home / user /に送信されます。
スクリプトが任意のカスタムファイル名からの読み取りまたはアップロードを許可されている場合、攻撃者はアプリケーションを../../../../../../../などの名前のディレクトリをトラバースするように指示します。 ../../etc/passwd。
入力フィルタリングなどの重要なセキュリティ機能を実装していない場合、ハッカーはサーバーのコアファイルに直接アクセスできます。これは、サイトのセキュリティにとって悪いニュースです。
リモートコード実行(RCE)攻撃を防ぐために何ができますか?
このガイドに記載されている詳細情報は、あなたを脅迫したり、恐れを引き起こしたりすることを意図したものではありません。 むしろ、最も堅牢なWordPressサイトのセキュリティ対策を常に実行することの重要性が増していることを強調することを目的としています。
また、プラグインを常に最新の状態に保ち、新しいRCEの脆弱性にさらされないようにすることも忘れないでください。
RCE攻撃の大部分は、それらを認識し、発生する前に準備するだけで、軽減または完全に停止できます。 WordPressサイトの所有者として、サイトサーバーがユーザーから提供された情報をどのように処理するかを予測して理解することが重要です。
リモートコード実行(RCE)攻撃を防ぐ方法:5つのステップ
サイトがRCEの脆弱性から保護されていることを確認するための一番の方法は、多面的な防御システムを採用することです。 つまり、1つの防御線で失敗した場合でも、潜在的な攻撃から保護されたままになります。
そうは言っても、これらの悪意のある、しばしば危険な攻撃を防ぐために取るべき最も重要なステップのいくつかを見てみましょう。 いくつかの要因により、WordPressサイトが攻撃の成功に対してより脆弱になる可能性があります。
1. iThemes SecurityProプラグインをダウンロードしてインストールします
サイトの保護と保護を開始するには、iThemes SecurityProプラグインをダウンロードしてインストールします。
今すぐiThemesSecurityProを入手
2.バージョン管理をアクティブにして、WordPressコア、プラグイン、テーマを最新の状態に保ちます
簡単に言えば、Webサイトで古いバージョンのワードプレス、プラグイン、テーマを実行していると、攻撃のリスクにさらされます。 バージョンの更新には、リモートコード実行(RCE)の脆弱性など、コードのセキュリティ問題に対するパッチが含まれていることが多いため、WordPressWebサイトにインストールされているすべてのソフトウェアの最新バージョンを常に実行することが重要です。
アップデートは、利用可能になり次第、WordPressダッシュボードに表示されます。 WordPressサイトにログインするたびに、バックアップを実行してから、利用可能なすべての更新を実行する練習をしてください。 更新を実行するタスクは不便または面倒に思えるかもしれませんが、それは重要なWordPressセキュリティのベストプラクティスです。

開示されたすべてのWordPressの脆弱性を追跡することは困難であり、WordPressの脆弱性のまとめで追跡して共有し、そのリストをWebサイトにインストールしたプラグインやテーマのバージョンと比較します。 ただし、これはWordPressハッカーが既知の脆弱性を持つプラグインやテーマを標的にすることを阻止するものではありません。 既知の脆弱性を持つソフトウェアをサイトにインストールすると、ハッカーはWebサイトを乗っ取るために必要な青写真を得ることができます。
iThemes Security Proプラグインのバージョン管理機能を使用すると、WordPress、プラグイン、およびテーマを自動更新できます。 さらに、バージョン管理には、古いソフトウェアを実行しているときにWebサイトを強化し、古いWebサイトをスキャンするオプションもあります。
バージョン管理の使用を開始するには、セキュリティ設定のメインページでモジュールを有効にします。

次に、[設定の構成]ボタンをクリックして、サイトを保護するように設計された設定を詳しく確認します。

- WordPressアップデート–最新のWordPressリリースを自動的にインストールします。
- プラグインの更新–最新のプラグインの更新を自動的にインストールします。 この設定を有効にすると、WordPressの自動更新プラグイン機能が無効になり、競合が防止されます。
- テーマの更新–最新のテーマの更新を自動的にインストールします。 この設定を有効にすると、WordPressの自動更新テーマ機能が無効になり、競合が防止されます。
- 古いソフトウェアを実行しているときにサイトを強化する–利用可能なアップデートが1か月間インストールされていない場合、サイトに保護を自動的に追加します。
- 古いWordPressサイトのスキャン–攻撃者がサーバーを危険にさらす可能性のある古いWordPressサイトのホスティングアカウントのスキャンを毎日実行します。 脆弱性のある単一の古いWordPressサイトでは、攻撃者が同じホスティングアカウント上の他のすべてのサイトを侵害する可能性があります。
- 脆弱性が修正された場合の自動更新–このオプションは、iThemes Security Proサイトスキャンと連携して機能し、既知のWordPress、プラグイン、およびテーマの脆弱性についてWebサイトをチェックし、利用可能な場合はパッチを適用します。
プラグインとテーマの更新
次に、プラグインとテーマの更新の構成について詳しく見ていきましょう。 始める前に、プラグインとテーマの更新設定を有効にすると、競合を防ぐためにWordPressの自動更新機能が無効になることを簡単に思い出してください。
プラグインとテーマの更新設定には、3つの選択肢があります。
- 空白/なし–設定を空白のままにすると、WordPressでプラグインとテーマの更新を管理できるようになります。
- カスタム–カスタムオプションを使用すると、好みに合わせて更新を正確にカスタマイズできます。 これについては、もう少し詳しく説明します。
- すべて–更新が利用可能になるとすぐに、すべてがすべてのプラグインまたはテーマを更新します。
次に、カスタムオプションを詳しく見てみましょう。

[カスタム]オプションを選択すると、プラグインとテーマの更新に3つの異なる選択肢が提供されます。 ご覧のとおり、カスタム自動更新設定は、WordPressの自動更新オプションのオンまたはオフよりもはるかに柔軟性があります。
3.脆弱なプラグインとテーマについてサイトをスキャンします
iThemes Security Pro Site Scannerは、WordPress Webサイトを、すべてのソフトウェアハッキングの最大の原因である古いプラグインや既知の脆弱性を持つテーマから保護するためのもう1つの方法です。 サイトスキャナーは、既知の脆弱性についてサイトをチェックし、パッチが利用可能な場合は自動的に適用します。

チェックされた3種類の脆弱性
- WordPressの脆弱性
- プラグインの脆弱性
- テーマの脆弱性
新規インストールでサイトスキャンを有効にするには、iThemes Security Pro設定に移動し、サイトスキャン設定モジュールの[有効にする]ボタンをクリックします。

手動のサイトスキャンをトリガーするには、セキュリティ設定の右側のサイドバーにあるサイトスキャンウィジェットの[今すぐスキャン]ボタンをクリックします。

サイトスキャンの結果がウィジェットに表示されます。

サイトスキャンで脆弱性が検出された場合は、脆弱性のリンクをクリックして詳細ページを表示します。

サイトスキャンの脆弱性ページで、脆弱性に対して利用可能な修正があるかどうかを確認します。 利用可能なパッチがある場合は、[プラグインの更新]ボタンをクリックして、Webサイトに修正を適用できます。
パッチが利用可能になってから、修正を反映するようにiThemes Security VulnerabilityDatabaseが更新されるまでに遅延が生じる可能性があります。 この場合、通知をミュートして、脆弱性に関連するアラートをこれ以上受信しないようにすることができます。
4.セッションハイジャックを防止する
リモートコード実行の脆弱性から身を守るために、WordPressWebサイトの管理者と編集者にセッションハイジャック保護を設定する必要があります。
iThemes Security Proの信頼できるデバイス機能により、セッションハイジャックは過去のものになります。 セッション中にユーザーのデバイスが変更された場合、iThemes Securityはユーザーを自動的にログアウトして、ユーザーの電子メールアドレスの変更や悪意のあるプラグインのアップロードなど、ユーザーのアカウントでの不正なアクティビティを防止します。
iThemes Security Proの信頼できるデバイス機能は、あなたや他のユーザーがWordPressサイトへのログインに使用するデバイスを識別するために機能します。 デバイスが特定されたら、セッションハイジャッカーやその他の悪意のある人物がWebサイトに損害を与えるのを防ぐことができます。
ユーザーが認識されないデバイスにログインすると、信頼できるデバイスは管理者レベルの機能を制限できます。 つまり、攻撃者がWordPressサイトのバックエンドに侵入できた場合、攻撃者はWebサイトに悪意のある変更を加えることができなくなります。
信頼できるデバイスの使用を開始するには、セキュリティ設定のメインページで信頼できるデバイスを有効にしてから、[設定の構成]ボタンをクリックします。

[信頼できるデバイス]設定で、この機能を使用するユーザーを決定し、[機能の制限]および[セッションハイジャック保護]機能を有効にします。

新しい信頼できるデバイスの設定を有効にすると、ユーザーはWordPress管理バーに保留中の認識されていないデバイスに関する通知を受け取ります。 現在のデバイスが信頼できるデバイスのリストに追加されていない場合は、[このデバイスの確認]リンクをクリックして認証メールを送信します。

認識されないログイン電子メールの[デバイスの確認]ボタンをクリックして、現在のデバイスを[信頼できるデバイス]リストに追加します。

信頼できるデバイスを有効にすると、ユーザーはWordPressのユーザープロファイルページからデバイスを管理できます。 この画面から、[信頼できるデバイス]リストからデバイスを承認または拒否できます。

さらに、一部のサードパーティAPIにサインアップして、信頼できるデバイスの識別の精度を向上させ、静的イメージマップを使用して認識されないログインのおおよその場所を表示するオプションがあります。 信頼できるデバイスの設定をチェックして、利用可能な統合を確認してください。

5.すべての管理者ユーザーに対して2要素認証をオンにします
二要素認証は、2つの別個の検証方法を要求することにより、個人のIDを検証するプロセスです。 Googleはブログで、2要素認証を使用すると自動ボット攻撃を100%阻止できることを共有しました。 悪くないオッズ!
iThemes Securityプラグインを使用すると、WordPressサイトの2要素認証をアクティブ化できるため、ユーザーはログインするためにセカンダリコードを入力する必要があります。
iThemes SecurityProが提供する3つの2要素認証方法は次のとおりです。
- モバイルアプリ–モバイルアプリ方式は、iThemes SecurityProが提供する2要素認証の最も安全な方式です。 この方法では、AuthyやGoogleAuthenticatorなどの無料の2要素モバイルアプリを使用する必要があります。
- 電子メール– 2要素の電子メール方式は、時間に敏感なコードをユーザーの電子メールアドレスに送信します。
- バックアップコード–主要な2要素認証方式が失われた場合にログインに使用できる1回限りの使用コードのセット。
Webサイトで2要素認証の使用を開始するには、iThemes SecurityPro設定のメインページでこの機能を有効にします。

こちらの手順に従って、WordPressサイトの2要素認証の設定を続行します。 推奨事項に従い、特権ユーザーの強制要件を有効にした場合、次に表示されるのは2要素トークンを入力する場所です。

RCE防止:追加のヒント
1.確立されたソフトウェアアプリケーションとプラグインのみを使用する
「エスケープ」のプロセスは、RCEの脆弱性に対する最初の防衛線として最適です。 ただし、スクリプトタグ以外にも、サーバーやブラウザでコードを解釈する方法がいくつかあります。
あなたの目標があなた自身でそれらの一つ一つを追跡することであるならば、それは非常に複雑であり、あなたの時間とリソースのトンを必要とします。
幸い、アプリケーション開発者はRCEの脆弱性の問題について多くのことを考えてきました。
プラットフォームとその上で実行するテーマとプラグインに直接組み込まれたソリューションがあるため、WordPressのような信頼できる評判の良いCMS(コンテンツ管理システム)を使用するのが最善です。
新しいバージョンがリリースされたときに、すべてのソフトウェアアプリケーションとプラグインを最新の状態に保つことが常に不可欠です。 脆弱性が発見されると、ソフトウェア開発者は24時間体制で作業し、発見した弱点を先取りします。
これは、プラグインとテーマの作成者の両方に当てはまります。
WordPressの代わりにカスタムCMSを使用している場合は、パラメーター化されたクエリを利用することで、潜在的なSQLインジェクションからサイトを安全に保つことができます。 このクエリタイプは、実行するクエリの正確なタイプを事前にアプリケーションに通知します。 次に、ハッカーが挿入しようとする可能性のある追加コマンドを認識して削除します。 挿入が成功する代わりに、元のクエリが送信され、追加された文字列が除外されます。
上記の例では、パラメータ化されたクエリは次のようになります。
$ query =” SELECT * FROM users WHERE name =?” $ results = $ query.execute(“ 'OR' 1 '=' 1'-”)
このシナリオでは、データベースは「OR」「1」=「1」を正しい方法で処理しています。 このクエリをテキストのみの文字列と見なし、指定された名前に関連付けられたユーザーがいないことを理解します。
2.ユーザーの入力を検証します
RCEの脆弱性の防止を開始するのに最適な場所は、サイトユーザーがアプリケーションを操作する場所です。
最も簡単な方法は、不要な文字を削除して除外することです。
さらに別のオプションは、コンテンツをエスケープして保存することです。
エスケープの意味に慣れていない場合は、通常のテキストとしてコードのように見えるものを見るようにコンピューターに指示するプロセスです。 たとえば、スクリプトタグを「<script>」に置き換えます。
これを行うことにより、Webブラウザーは、指定された場所に「<未満」および「>より大きい」記号を表示することを理解します。 ただし、テキストの文字列全体をコードとして扱うわけではありません。
ユーザーには、結果は見えません。
3.最小特権の原則
ゼロデイRCEの脆弱性が発生する可能性があるまれな例があります。 これは、あなたもCMSやアプリケーション開発者も、特定の新しいタイプの攻撃に気付いていないことを意味します。
このような場合でも、アプリケーションが実行できることについていくつかの簡単なルールを設定することで、攻撃者が実行できる損害を制限することができます。
たとえば、データベースから読み取るアプリケーションを設計しているとします。 新しいアプリケーションにデータベースレコードを削除または書き込む機能または権限を与える必要は実際にはありません。
この場合、攻撃者がスクリプトを危険にさらそうとしても、エラーが発生し、失敗します。
最小特権の原則は、PHP関数に関連しているため、便利です。
PHP関数は、あらゆる種類のオンライン攻撃者の標準的な標的です。 ini_set()(スクリプト内からPHP設定を更新できる)やexec()(テキストとして渡されたコードを実行する)など、アプリに必要のない堅牢な関数は無効にする必要があります。
これにより、ハッカーや攻撃者が悪意のある目的でそれらを使用することを防ぎます。
この特定のアイデアは、サーバー側のコードだけでなく、Webサイトの公開領域を保護する場合にも当てはまります。
4.コンテンツ-セキュリティ-ポリシー
Content-Security-Policyは、ほとんどの最新のWebブラウザーでHTTPで使用されるヘッダーです。 それはブラウザがあなたのウェブサイトにロードすることになっているコンテンツの種類を決定します。 アプリケーションまたはWebサーバーからヘッダーを送信するときに、実行を許可するスクリプトの種類と場所を指定できます。
この戦略を使用すると、ハッカーが悪意のあるスクリプトを挿入するのを防ぐことができます。
5.スクリプトによるCookieの読み取りを停止します
さらに別のオプションは、スクリプトがCookieを読み取らないようにすることです。 これにより、リクエストが他のサイトに送信されなくなります。
これは、SameSite = StrictまたはHttpOnly属性を使用して設定することで実行されます。 ハッカーのコードがWordPressサイトで実行されるシナリオでも、ハッカーがサイトユーザーの認証Cookieにアクセスできないようにします。
これにより、WordPressのリモートコード実行攻撃時の潜在的な被害が大幅に軽減されます。
まとめ:WordPressのリモートコード実行
WordPressサイトを探している潜在的なセキュリティの脅威をすべて発見したときに、少し圧倒されていると感じても心配しないでください。 真実は脅威が多いということですが、解決策は簡単です。
このガイドが、WordPressサイトでのRCE攻撃のリスクを理解するのに役立つことを願っています。 上記の5つのステップに加えて、いくつかのWordPressセキュリティのベストプラクティスを実装することで、より優れた防御線が得られます。
Kristenは、2011年からWordPressユーザーを支援するチュートリアルを作成しています。通常、彼女はiThemesブログの新しい記事に取り組んでいるか、#WPprosperのリソースを開発しています。 仕事以外では、クリステンはジャーナリング(2冊の本を書いています!)、ハイキングやキャンプ、料理、家族との毎日の冒険を楽しんでおり、より現代的な生活を送っています。
