A Web shell is a Web script that is placed on an openly accessible Web server to allow an adversary to use the Web server as a gateway into a network. A Web shell may provide a set of functions to execute or a command-line interface on the system that hosts the Web server. In addition to a server-side script, a Web shell may have a client interface program that is used to talk to the Web server (see, for example, China Chopper Web shell client). (Citation: Lee 2013)
Web shells may serve as Redundant Access or as a persistence mechanism in case an adversary's primary access methods are detected and removed.
T1100は「Web Shell(Webシェル)」として定義されていた、非常に攻撃頻度の高い重大なテクニックです。
この手法は、公開されているWebサーバー(Apache, IIS, Nginxなど)に、PHPやASPX、JSPなどで書かれた「悪意のあるスクリプト(バックドア)」を設置し、外部からブラウザ経由でWebサーバーのOSコマンドを遠隔操作するものです。主に「永続化(Persistence)」と「防御回避(Defense Evasion)」のために利用されます。
この手法で攻撃者は、「ファイアウォールを無効化することなく、企業のWeb通信(80/443番ポート)に完全に紛れ込んだ遠隔操作環境」を実現します。
強固な永続化:
一度Webサーバーの公開ディレクトリにスクリプトを置ければ、サーバーが再起動しようが、OSのパッチが当たろうが、そのURLにアクセスするだけでいつでも内部コマンドを実行できます。
境界突破の踏み台:
外部から直接アクセスできない社内ネットワーク(LAN)に対し、Webサーバーを「中継基地(ゲートウェイ)」として利用し、内部探索(横展開)を開始できます。
検知の回避:
通常の遠隔操作ツール(RAT)のように怪しいポートを開けたり、不審な外部IPへ自発的に通信(逆接続)したりしません。一見すると一般ユーザーからの「普通のWebアクセス」に見えるため、ネットワーク監視を容易にすり抜けます。
攻撃者はまず、Webアプリケーションの脆弱性を突いてサーバーへのファイル書き込み権限を得ることから始めます。
侵入と設置:
/var/www/html/ や C:\inetpub\wwwroot\)に1ファイルだけの短いスクリプトを送り込みます。<?php system($_GET['cmd']); ?>外部からの呼び出し:
https://example.com/uploads/image.php?cmd=whoamiコマンド実行:
httpd や w3wp.exe など)がこのスクリプトを解釈し、OS上で whoami コマンドを実行します。結果の受取:
Webシェルは「設置させないこと」と「設置されたものをいち早く見つけること」の2つのアプローチが必要です。
Webアプリケーションの脆弱性対策:
WAF(Web Application Firewall)を導入して不正なファイルアップロードやインジェクション攻撃を遮断し、CMS(WordPressなど)やプラグインを常に最新に保ちます。
ディレクトリ書き込み権限の制限:
Webサーバープロセス(www-data や IUSR など)が、スクリプト(.php, .aspxなど)を実行する予定のないフォルダ(例: 画像アップロード先フォルダなど)に対して「ファイルの作成・書き込み」を行えないよう、OSレベルのアクセス権限(ACL)を厳格化します。
ファイル整合性監視(FIM):
Webサーバーの公開ディレクトリを監視し、予期せぬ新規ファイルの作成や既存スクリプトの変更があった場合に即座に管理者へ通知します。
プロセスツリーの監視(EDR):
Webサーバーのプロセス(apache2, nginx, w3wp.exe)が、子プロセスとして不審なシェル(cmd.exe, powershell.exe, /bin/sh)を立ち上げていないかを監視・遮断します。これが最も実効性の高い検知手法です。
足跡が「Webログ」に残る:
攻撃の命令はHTTPリクエストとして送られるため、Webサーバーのアクセスログ(access.log など)に不自然なリクエスト(引数にコマンドが含まれる、普段アクセスされないファイルへの大量のPOST通信など)が記録されます。
ファイルレスへの進化:
近年はディスクにファイルを書き込まず、Webサーバーの「メモリ上(モジュールやフィルターとして機能拡張の形で)」に直接Webシェルを常駐させる高度な手法(IISモジュールの悪用など)も登場しています。
CWE-434: Unrestricted Upload of File with Dangerous Type:
危険なタイプのファイル(スクリプトファイル)を制限なくアップロードできてしまう不備。
CWE-94: Improper Control of Generation of Code (Code Injection):
外部からの入力をコードとして実行してしまう不備。
世界中で発生する大規模なサーバー侵害インシデントの多くで、Webシェルが最初の足がかりとして使われています。
CVE-2021-26855 / CVE-2021-27065 (ProxyLogon):
Microsoft Exchange Serverの極めて深刻な脆弱性。世界中の数万台のサーバーがこれを突かれ、「China Chopper」と呼ばれる有名なWebシェルを植え付けられました。
CVE-2023-34362 (MOVEit Transferの脆弱性):
大規模なデータ窃取を伴うランサムウェア攻撃で悪用され、Webシェルを介して内部のデータベースから機密情報が一斉に盗み出されました。
Webサーバーの調査において、「Webサーバーのプロセスが親となって whoami や net user、hostname といった環境調査コマンドを実行している」ログを見つけた場合、ほぼ100%の確率でWebシェルが動いています。 すぐに該当するWebサーバーをネットワークから隔離し、公開ディレクトリ内の全ファイルをタイムスタンプやハッシュ値で検査してください。
この攻撃手法を利用する脅威アクターは登録されていません。