关于 supabase-detect
supabase-detect 是用于安全审计的技能,可检查公开可访问的 Web 应用是否使用 Supabase。它结合域名、JavaScript、API 端点和响应头等证据,并记录结果供后续审计使用。
主要功能
- 01检查 Supabase 域名特征
- 02识别 JavaScript 客户端签名
- 03检查 Supabase API 端点
- 04分析响应头
- 05记录置信度与证据
适用场景
- 01审计前确认是否使用 Supabase
- 02检查多个应用的 Supabase 使用情况
- 03调查单页应用中的 Supabase 用法
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ yoanbernabeu/ supabase-pentest-skills --skill supabase-detect安装后在 Claude Code 中输入/supabase-detect确认已加载。
详细介绍
Supabase 检测
🔴 严重:必须渐进式更新文件
必须在执行过程中写入上下文文件,而不能等到最后才写。
- 每次发现后立即写入
.sb-pentest-context.json- 每次操作之前和之后都要记录到
.sb-pentest-audit.log- 不要等到技能执行完毕后才更新文件
- 如果技能崩溃或中断,之前的所有发现都必须已经保存
这不是可选项。未能渐进式写入属于严重错误。
此技能用于确定 Web 应用是否使用 Supabase 作为后端。
何时使用此技能
- 对未知应用启动安全审计
- 在运行其他审计技能前验证是否使用 Supabase
- 快速检查多个应用是否使用 Supabase
前置条件
- 目标 URL 必须可公开访问
- 需要互联网连接,以获取并分析目标
检测方法
此技能使用多种检测方式:
1. 域名模式匹配
在以下内容中搜索与 Supabase 相关的域名:
- HTML 源代码
- JavaScript 包
- 网络请求(通过内联脚本)
检测模式:
*.supabase.co
*.supabase.com
supabase-cdn.com
2. JavaScript 客户端检测
查找 Supabase 客户端库特征:
// Import patterns
import { createClient } from '@supabase/supabase-js'
const { createClient } = require('@supabase/supabase-js')
// Client initialization
supabase.createClient(
createClient('https://
SUPABASE_URL
NEXT_PUBLIC_SUPABASE
VITE_SUPABASE
REACT_APP_SUPABASE
3. API 端点检测
检查 Supabase 的典型端点:
/rest/v1/
/auth/v1/
/storage/v1/
/realtime/v1/
/functions/v1/
4. 响应标头分析
查找 Supabase 专用标头:
x-supabase-*
sb-*
用法
基本检测
Check if https://myapp.example.com uses Supabase
输出详细信息的检测
Detect Supabase on https://myapp.example.com with full details
输出格式
检测到 Supabase
═══════════════════════════════════════════════════════════
SUPABASE DETECTED
═══════════════════════════════════════════════════════════
Target: https://myapp.example.com
Status: ✅ Supabase usage confirmed
Detection Evidence:
├── Domain: abc123def.supabase.co (found in main.js)
├── Client: @supabase/supabase-js v2.x detected
├── Endpoints: /rest/v1/, /auth/v1/, /storage/v1/
└── Headers: x-supabase-api-version present
Project Reference: abc123def
Project URL: https://abc123def.supabase.co
Context saved to: .sb-pentest-context.json
═══════════════════════════════════════════════════════════
未检测到 Supabase
═══════════════════════════════════════════════════════════
DETECTION RESULT
═══════════════════════════════════════════════════════════
Target: https://myapp.example.com
Status: ❌ Supabase not detected
Scanned:
├── HTML source: No Supabase patterns
├── JavaScript bundles: 3 files analyzed, no matches
├── Network patterns: No Supabase endpoints
└── Response headers: No Supabase headers
Note: The app may use a self-hosted Supabase or custom domain.
Try providing a known Supabase URL manually if you have one.
═══════════════════════════════════════════════════════════
上下文输出
检测到 Supabase 时,技能会将信息保存到 .sb-pentest-context.json:
{
"target_url": "https://myapp.example.com",
"detection": {
"detected": true,
"confidence": "high",
"timestamp": "2025-01-31T10:00:00Z",
"evidence": [
{
"type": "domain",
"value": "abc123def.supabase.co",
"location": "/static/js/main.js",
"line": 1247
},
{
"type": "client_library",
"value": "@supabase/supabase-js",
"version": "2.x"
}
]
},
"supabase": {
"project_ref": "abc123def",
"project_url": "https://abc123def.supabase.co"
}
}
审计日志条目
每次检测都会记录到 .sb-pentest-audit.log:
[2025-01-31T10:00:00Z] DETECTION_START target=https://myapp.example.com
[2025-01-31T10:00:01Z] FETCH_HTML status=200 size=45KB
[2025-01-31T10:00:02Z] FETCH_JS file=main.js status=200 size=1.2MB
[2025-01-31T10:00:03Z] PATTERN_MATCH type=domain value=abc123def.supabase.co
[2025-01-31T10:00:03Z] DETECTION_COMPLETE result=detected confidence=high
置信度级别
| 级别 | 标准 |
|---|---|
| 高 | 多种证据类型(域名 + 客户端 + 端点) |
| 中 | 单一强证据(域名或明确的客户端初始化) |
| 低 | 仅有间接证据(通用模式,可能误报) |
边缘情况
自定义域名
某些 Supabase 项目使用自定义域名(例如,api.mycompany.com)。在这种情况下:
Detect Supabase on https://myapp.com with custom API domain api.mycompany.com
自托管 Supabase
自托管实例不会使用 .supabase.co 域名。请查找:
- PostgREST 模式(
/rest/v1/) - GoTrue 认证模式(
/auth/v1/) - 代码中的 Supabase 客户端库
单页应用
对于使用延迟加载代码块的 SPA:
Detect Supabase on https://myapp.com including all JS chunks
常见问题
❌ 问题: 在 SPA 上检测结果为假阴性
✅ 解决方案: 应用可能会延迟加载 Supabase。尝试先与应用交互以加载所有代码块,或提供已知模式。
❌ 问题: 检测到多个 Supabase 项目
✅ 解决方案: 多租户配置可能会导致这种情况。技能会列出找到的所有项目。
❌ 问题: 检测速度较慢
✅ 解决方案: 分析大型 JS 包需要时间。使用 --quick 模式可加快检测,但检测不够全面:
Quick detect Supabase on https://myapp.com
后续步骤
检测完成后:
- 运行
supabase-extract-url,确认并提取项目 URL - 运行
supabase-extract-anon-key,查找 API 密钥 - 或使用
supabase-pentest进行完整的引导式审计
强制要求:渐进式更新上下文文件
⚠️ 此技能必须在执行过程中渐进式更新跟踪文件,而不能只在最后更新。
关键规则:边执行边写入
不要在最后批量写入。请按以下方式操作:
- 开始任何操作之前 → 将操作记录到
.sb-pentest-audit.log - 每次发现之后 → 立即更新
.sb-pentest-context.json - 每个重要步骤之后 → 将完成情况记录到
.sb-pentest-audit.log
这样可以确保即使技能遭到中断、崩溃或超时,届时为止的所有发现也都能得到保留。
必需操作(渐进式)
-
创建/更新
.sb-pentest-context.json并写入结果:{ "target_url": "https://myapp.example.com", "detection": { "detected": true, "confidence": "high", "timestamp": "...", "evidence": [ ... ] }, "supabase": { "project_ref": "abc123def", "project_url": "https://abc123def.supabase.co" } } -
创建
.sb-pentest-audit.log并记录日志:[TIMESTAMP] [supabase-detect] [START] Starting Supabase detection [TIMESTAMP] [supabase-detect] [SUCCESS] Supabase detected with high confidence [TIMESTAMP] [supabase-detect] [CONTEXT_UPDATED] .sb-pentest-context.json created/updated -
重要:作为审计链中的第一个技能,如果上下文文件不存在,本技能负责创建它们。
不接受未更新上下文文件的情况。
强制要求:收集证据
📁 证据目录: .sb-pentest-evidence/01-detection/
要创建的证据文件
| 文件 | 内容 |
|---|---|
initial-scan.json | 包含所有证据的原始检测结果 |
supabase-endpoints.txt | 已发现的 Supabase 端点列表 |
client-code-snippets/ | 包含相关代码摘录的目录 |
证据格式
{
"evidence_id": "DET-001",
"timestamp": "2025-01-31T10:00:00Z",
"category": "detection",
"target_url": "https://myapp.example.com",
"detection_results": {
"supabase_detected": true,
"confidence": "high",
"project_url": "https://abc123def.supabase.co",
"project_ref": "abc123def"
},
"evidence": [
{
"type": "domain_pattern",
"value": "abc123def.supabase.co",
"location": "/static/js/main.js",
"line": 1247,
"context": "const SUPABASE_URL = 'https://abc123def.supabase.co'"
},
{
"type": "client_library",
"value": "@supabase/supabase-js",
"version": "2.x"
}
],
"curl_command": "curl -s 'https://abc123def.supabase.co/rest/v1/' -H 'apikey: [ANON_KEY]'"
}
添加到 curl-commands.sh
# === DETECTION ===
# Check Supabase API availability
curl -s "$SUPABASE_URL/rest/v1/" -H "apikey: $ANON_KEY" | head -100
添加到 timeline.md
## [TIMESTAMP] - Detection Phase Complete
- Supabase detected with [confidence] confidence
- Project: [project_ref]
- Evidence: `01-detection/initial-scan.json`
相关技能
supabase-extract-url— 从代码中提取项目 URLsupabase-extract-anon-key— 查找 anon keysupabase-pentest— 完整的编排式审计