ウェブシェル:攻撃者はどのように利用し、どのように検知するか

Attributed to: 2025年には、インターネットに公開されているウェブアプリケーションを標的としたエクスプロイトが、6年連続で初期侵入の主要な経路となった。 MandiantのM-Trends 2026レポート. Webシェルは、それらのエクスプロイトが持続する上で中心的な役割を果たしています。% のインシデントにおいて、脅威グループは 2024 年第 4 四半期に Web シェルを展開しました。これは、前期の 3 倍以上の割合です。侵害された Web サーバーに設置されると、Web シェルは攻撃者に長期間の永続性、ラテラルムーブメントの能力、そして機密データへの直接アクセスを提供します。これらすべては、従来のマルウェアでは生成されるアラートをトリガーすることなく実行されます。.

2025年、初期侵害から攻撃者の引き渡しまでの期間の中央値は 22秒. Webシェルは、そのスピードを支える重要な機能です。これにより、攻撃者はランサムウェアの展開やデータ流出を担当する別のグループが引き継ぐ間、静かにアクセスを維持できます。ここでは、古典的なPHP Webシェルの仕組みと、これらのスクリプトが単一のパッチ未適用の脆弱性を永続的な侵害に変える上で、なぜ依然として効果的であるかを解き明かしましょう。.

Webシェルが重要である理由

Webシェルとは、攻撃者が脆弱なWebアプリケーションにアップロードする(通常PHP、ASP、またはJSPで書かれた)小さなスクリプトです。.

Web Shellを隠しコントロールパネルと考えてください。インストールされると、ハッカーはブラウザからコマンドを実行したり、ファイルを閲覧したり、サーバーを乗っ取ったりできるようになります。Webアプリケーションの単一の脆弱性が、すぐに恒久的なバックドアになる可能性があります。.

~によると CISA, Webシェルは、Linux、Microsoft Windows、macOS、およびネットワークプラットフォームで動作できます。.

攻撃者は通常、ウェブシェルスクリプトを以下から仕掛けます。

  • 公開ウェブアプリにおけるリモートコード実行のバグ
  • 不適切に保護されたファイルアップロードフォーム
  • リモートまたはローカルファイルインクルージョン(RFI/LFI)の脆弱性
  • WordPressのような古いCMSプラグインやテーマ

長年にわたり、いくつかのシェルが悪名高くなっています。

  • C99 ウェブシェル:ファイル管理、コマンド実行、データベース用ツールを備えた機能満載の PHP シェル
  • チャイナチョッパーウェブシェル 隠密な持続のためにしばしば使用される、小さくも強力なWebシェル
  • R57WSO Webシェル 古いものの、まだアクティブなWebシェル(基本的なファイル操作およびコマンド実行機能付き)
  • B374K ウェブシェル プロセスを表示し、コマンドを実行できるPHPウェブシェル

これらのウェブシェルが実際にどのように動作するか見てみましょう。.

図1:Webシェル攻撃サイクルの例.

事例研究:実際のWebシェルインシデント

コンポーネントを分解する前に、Webシェルが引き起こす可能性のある被害の実際的な例を見てみましょう。それらは原因となりました サイバー攻撃インシデントの35件% 2024年第4四半期に、注視すべき主要な悪意のあるスクリプトとなります。.

  • 2025年4月 ~によると ハッカーニュース, 、攻撃者がJSPウェブシェルをアップロードし、Brute Ratelのようなツールを使用して権限を昇格させてデータを盗むことができる致命的なバグ。スキャンにより、オンラインで数百台の脆弱なサーバーが発見されました。.
  • 2023年7月 CISA Citrix NetScaler/ADCの脆弱性(CVE-2023-3519)が悪用され、Webシェル(多くの場合JSP)がドロップされ、リモートコマンド実行と永続化、ラテラルムーブメントが行われたと報告されています。.
  • 2022年6月 MITRE ATT&CK ロシア関連の脅威グループによって実行されたウクライナ電力攻撃中に、Webシェルがどのように展開されたかを文書化しました。.

要するに、Webシェルは脆弱なアプリケーションをあっという間に乗っ取られたWebサーバーに変えてしまい、壊滅的な結果を招きかねません。.

C99:ウェブシェル分析

C99は、以下のような多くの機能を1つのスクリプトに詰め込んだ、古典的なPHPウェブシェルの一例です。

  • ファイルマネージャー
  • アップロード/ダウンロード
  • コマンド実行
  • データベースヘルパー
  • 自己削除オプション

C99は、攻撃者のワークフロー全体を明確に示しています。攻撃者は、脆弱なアップロードやRCEを通じて小さなPHPファイルをドロップし、その同じスクリプトを使用してWebルートをブラウズし、OSコマンドを実行します。, 認証情報を取得 そして、さらなるステージのツール。.

C99ウェブシェルの詳細を見ていきましょう。.


図2:GitHubにおけるC99ウェブシェルのコード情報。(出典:GitHub)

ファイルシステムナビゲーション

  • 機能: ファイルシステムナビゲーションにより、攻撃者はフォルダーを一覧表示したり、ファイルを開いたり、その内容を読み取ることができます。攻撃者は次のような関数を使用する可能性があります scandir() または opendir() サーバー上のものを見るために, file_get_contents() ファイルを読み込むために、 file_put_contents() ファイルをドロップまたは更新します。.
  • なぜ重要なのか ハッカーは、このように設定ファイル、APIキー、バックアップ、その他の機密データを見つけ、追加のペイロードをステージングする場所を見つけます。.
  • 何に注目すべきか: PHPパスへの繰り返しアクセス、ディレクトリ一覧の返却、Webルート内の新規または最近変更されたファイル(異常なタイムスタンプ)、設定ファイルへの突然の読み取り、またはWebサーバーから開始された大規模なダウンロードを確認します。.

以下のスニペットは、動作を示すための単純化された例ですが、正確な実装や関数名はバリアントによって異なります。.

図3:PHPプログラミング言語におけるファイル・システム・ナビゲーションの例.

図3:PHPプログラミング言語におけるファイル・システム・ナビゲーションの例。.

2.ファイルのアップロード/ダウンロード

  • 機能: C99スタイルのシェルには、攻撃者が追加ツール(マルウェア、スキャナー、または大きなペイロード)をサーバーに配置できるように、ファイルアップロードフォームが含まれていることがよくあります。また、攻撃者がサーバーからファイルをダウンロードすることもできます。一般的なアップロードメカニズムは次のとおりです。 move_uploaded_file() (標準的なブラウザのファイルアップロード)、生のPOSTボディを受け付けるハンドラ、またはbase64エンコードされたファイルを運ぶPOSTフィールド。.
  • なぜ重要なのか 攻撃者はアップロードを利用して、さらに マルウェア またはアプリファイルを置き換えることができます。ダウンロードにより、Webサーバープロセスを通じて構成ファイルやデータベースダンプを環境から引き出すことができます。.
  • 何に注目すべきか: 同じPHPエンドポイントへの大量または異常なPOSTリクエスト(特に長いbase64文字列を含むもの)に注意し、その後、ウェブアクセス可能なフォルダに新しいファイルや奇妙な名前のファイルが現れたり、送信トラフィックが急増したりしないか確認してください。.
図4:ファイルアップロード/ダウンロードの参考PHPコード抜粋.

3. コマンド実行/リモートアクセス

  • 機能: C99は攻撃者に小さなWebターミナルを提供します。Web UIまたはPOSTリクエスト経由でコマンドを送信し、ブラウザでコマンドの出力を得ることができます。.
  • なぜ重要なのか 攻撃者はこの方法で、Webサーバーからリバースシェルを起動したり、権限昇格スクリプトを実行したり、その他のツールを起動したりします。.
  • 何に注目すべきか: PHPエンドポイントへの単一のリクエストの直後に、Webプロセスがシェルコマンドを起動したり、予期しないアウトバウンド接続を確立したりしないかを監視してください。.
図5:説明のための例であり、C99の正確な記述ではありません。.

4. データベース接続とデータ抽出

  • 機能: C99スタイルのシェルには、設定ファイル(アプリがDB認証情報を格納する場所)を読み取って、その認証情報を使用してSQLクエリを実行するためのクイックツールがよく含まれています。これにより、攻撃者はユーザーテーブルをダンプしたり、APIキーを盗んだり、永続化のために新しいレコードを書き込んだりすることができます。.
  • なぜ重要なのか DBアクセスがあれば、攻撃者は顧客データを流出させたり、アカウントを乗っ取ったり、 同じ資格情報を使用してください 他のサービスにアクセスでき、侵害の影響を増大させる.
  • 何に注目すべきか: 設定ファイルの予期せぬ読み込みや、Webサーバープロセスからの異常なDB接続・クエリに注意してください。.
図6:PHPの例.

5. 難読化とフォレンジック対策

C99のバリアントは、文字列やロジックを隠すために「」を使用することがあります。 base64_decode(), gzinflate または eval() ラッパーを使用し、ペイロードを圧縮または分割して単純なシグネチャ検出を回避する場合があります。また、使用後に自己削除することもあります。これらのトリックにより、シグネチャベースのスキャナーや迅速な手動レビューではインプラントを見逃します。.

攻撃者がWebシェルを配布する方法

Webシェルオペレーティングシステムの内部構造を見てきたので、次にハッカーがそれをどのように侵害されたシステムに侵入させるのかを説明します。.

  • 公開アプリにおけるリモートコード実行(RCE)の悪用:攻撃者があなたのサーバー上でコードを実行します
  • 攻撃者がファイルをドロップできる安全でないファイルアップロードエンドポイントまたは設定ミスのある権限
  • リモート・ファイル・インクルージョン(RFI)またはローカル・ファイル・インクルージョン(LFI)チェーンにより、攻撃者はサーバーにリモート・ファイルを書き込ませたり、実行させたりすることができる。
  • 改ざんされたプラグインまたはテーマ、盗まれた管理者認証情報、または フィッシング WordPressなどでよく見られる、管理画面へのアクセスを許可する

チェックリスト:Webシェルを検出する方法

ハンターやトリアージ中に使用できる明確なチェックリストを以下に示します。各項目は確認すべき場所と、それが通常何を意味するかを示しています。.

  1. ウェブフォルダ内の新規または奇妙な名前のPHPファイル: 以前にはなかったファイル、奇妙な名前(ランダムな文字列)がついたファイル、または前回デプロイ時と一致しないタイムスタンプのファイルを確認してください。.
  2. Webサーバーからの予期せぬアウトバウンド接続: 未知のIPアドレスへの繰り返し、周期的な接続は、コマンド&コントロールへのビーコンとなり得ます。.
  3. ウェブサーバーが新しいプロセスを生成したり、シェルコマンドを実行したりする: ウェブプロセスが突然フォークした場合 シー, バッシュ, などの予期せぬバイナリは、高優先度として扱う。.
  4. CMSコアファイル、プラグイン、または不明な管理者アカウントの変更: 改変されたコアファイル、新規管理者ユーザー、またはベンダーのハッシュと一致しないプラグインファイルを探します。.
  5. 長いボディまたはBase64のようなデータを持つ奇妙なPOSTリクエスト: 長文のエンコードされた文字列を伴う、同じPHPエンドポイントへの大規模または頻繁なPOSTリクエストは、アップロードやリモート書き込みを示唆することがよくあります。.

監視ツールからもメリットを得られます。.

例えば、ファイル整合性監視を使って、新たに作成された、または変更されたWebルートファイルを検出したり、Webアプリケーションファイアウォール(WAF)やWebサーバーのログを監視して異常なPOSTリクエストを確認したり、EDRアラートでWebプロセスがシェルを起動したりバイナリを書き込んだりするのを検知したり、ネットワーク/IDSでビーコニングや予期せぬ通信を検出したりできます。これらの情報を組み合わせることで、より迅速にインプラントを検出できるでしょう。.

CybelAngelは、このプロセスを補完できます。公開されているインターネットに面した資産(最も機密性の高いデータが含まれていることが多い)を管理し、本格的な侵害に発展する前に問題をフラグ付けすることができます。.

図7:機密データ漏洩の例。(出典: シベルエンジェル)

CISOs(最高情報セキュリティ責任者)のための7つの戦術的サイバーセキュリティ対策

ここではいくつかの修正点です CISOs Webシェルを先回りして対処することを優先すべきです。.

  • 公開されているアプリケーションやプラグインにパッチを適用する ベンダー修正を迅速に適用し、安全な場合はアップデートを自動化してください。.
  • Harden アップロードエンドポイント ファイルタイプを検証し、メタデータを削除し、実行可能ファイルを拒否し、アップロードをウェブルートの外に保存します。.
  • 怪しいPOSTリクエストに対してWAFをチューニングしてください。 大きな、あるいはエンコードされたPOSTボディや、既知のWebシェルシグネチャをブロックまたは挑戦します。.
  • ウェブルートのファイル整合性チェックを実行します。 コンテンツを定期的にハッシュし、PHPファイルの新規作成や変更にアラートを出す。.
  • Webサーバーからの出口をロックダウンする: 送信先を許可リストに登録し、予期しない送信ポートをブロックします。.
  • 認証情報の衛生状態を改善する シークレットをローテーションし、管理者パネルにMFAを適用し、新規・特権アカウントを警告する。.
  • 外部脅威インテリジェンスを活用して、修正の優先順位付けを行う 露出したアプリをマッピングし、CybelAngelなどのツールを使用してプロセスを自動化しながら、リスクの高いアセットから優先的に修正を行います。.

よくある質問

Webシェルは、攻撃者がウェブサイトに仕掛ける小さなスクリプトです。それが設置されると、通常のWebリクエストを通じてブラウザからサーバーを制御できるようになります(コマンドの実行、ファイルの読み取り、ツールのアップロード、データの取得など)。.

ファイルブラウザ(ファイルのリスト表示と読み込み).
アップロード/ダウンロード機能
システムコマンドを実行する (小さなWebターミナル)
データベース用のシンプルなSQL/クエリツール
Web UI またはパスワード保護されたバックドア
証拠隠滅のための難読化または自己削除オプション

リモートコード実行バグ、安全でないファイルアップロードフォーム、RFI/LFIチェーン、または侵害されたプラグイン/認証情報のような脆弱性を利用します。多くの場合、スキャナーが脆弱性を見つけ、オペレーターがシェルをアップロードしてアクセスをテストします。.

ウェブフォルダ内の新規または奇妙な名前のPHPファイル
長文または特殊なPOST(大きなボディまたはbase64データ)
Webサーバーからの繰り返しのアウトバウンド接続(ビーコニング/C2)
Webサーバーが予期しないプロセスやシェルコマンドを起動しています
CMSコアファイルの変更または不明な管理者アカウント

Webアプリとプラグインにパッチを適用し、ファイルアップロードをロックダウンしてWebルートの外に保存し、WAFを調整し、ファイル整合性チェックとアウトバウンド制御を実行し、強力な認証情報管理(MFA、シークレットのローテーション)を強制します。CybelAngelのような外部アセットマッピングツールを使用して、最も重要な露出したアプリケーションの優先順位を付けます。.

攻撃者は新たなエクスプロイトを必要とせずに、長期的なアクセスを得ることができます。小さなスクリプトから、データを盗んだり、さらに多くのものをインストールしたりすることができます。 マルウェア, 、ネットワーク内を移動します。そして、深刻な被害が出るまで見つけるのが難しいことがよくあります。.

まとめ

ウェブシェルは洗練されていない。それこそが危険なのです。数百行のPHPが、パッチが適用されていない脆弱性を通してアップロードされるだけで、攻撃者は、元の欠陥が修正された後も、数週間から数ヶ月の間、あなたの環境に持続的にアクセスすることができます。.

Mandiantの2026年のデータがそのパターンを裏付けています。 悪用は依然として最初のアクセス・ベクトルのナンバーワン, インターネットに面したウェブ・アプリケーション・サーバが主な標的です。ウェブシェルは、最初の悪用と、それに続くすべてのもの(横方向への移動、クレデンシャルの窃取、ランサムウェアの展開)をつなぐ架け橋となります。.

ウェブシェルを早期に発見する組織には、外部からの攻撃対象領域を継続的に可視化する能力がある。どのインターネット向けアプリケーションが実行中で、どのアプリケーションにパッチが適用されていないかを把握し、予期しないファイルがウェブサーバに表示されるとアラートを受け取ります。CybelAngel の攻撃対象領域管理は、インターネットに面した資産を継続的にマッピングし、攻撃者が足場を築く前に、露出した脆弱なアプリケーションを特定します。.

著者について