数据库
检测到应用疑似使用 Supabase 时…
在已检测或疑似使用 Supabase 且目标客户端代码可访问时,定位并验证 Supabase 项目 URL。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
检测到应用疑似使用 Supabase 时特定
解决思路
- 必须边执行边写入上下文文件,不能只在技能结束时批量写入。
- 每次发现后立即写入 `.sb-pentest-context.json`。
- 在每次动作之前和之后记录到 `.sb-pentest-audit.log`。
- 不要等技能完成才更新文件。
- 如果技能崩溃或被中断,所有先前发现必须已经保存。
- 如果 `.sb-pentest-context.json` 或 `.sb-pentest-audit.log` 不存在,先创建再写入。
- 扫描 JavaScript 源码中的 Supabase URL。
- 在 JavaScript 源码中查找直接 URL 引用,例如 `const SUPABASE_URL = 'https://abc123.supabase.co'` 和 `createClient('https://abc123.supabase.co', key)`。
- 在 JavaScript 源码中查找环境变量模式,例如 `process.env.SUPABASE_URL`、`process.env.NEXT_PUBLIC_SUPABASE_URL`、`import.meta.env.VITE_SUPABASE_URL`。
- 扫描 HTML meta 标签和脚本。
- 在 HTML 中查找 `<meta name="supabase-url" content="https://abc123.supabase.co">`。
- 在 HTML 脚本中查找 `window.SUPABASE_URL = 'https://abc123.supabase.co'`。
- 扫描配置对象。
- 在配置对象中查找 `const config = { supabase: { url: 'https://abc123.supabase.co' } }`。
- 识别标准 Supabase URL 模式,例如 `https://abc123.supabase.co`。
- 识别带区域的 Supabase URL 模式,例如 `https://abc123.eu-central-1.supabase.co`。
- 通过 API endpoint 模式检测自定义域名。
- 执行基础提取:`Extract Supabase URL from https://myapp.example.com`。
- 从本地文件执行提取:`Extract Supabase URL from ./dist/assets/`。
- 输出 Project URL、Project Ref、Region(推断值)。
- 输出 Found in 信息,包含文件、行号和上下文。
- 输出 API Endpoints,包括 REST API `https://abc123def.supabase.co/rest/v1/`、Auth API `https://abc123def.supabase.co/auth/v1/`、Storage `https://abc123def.supabase.co/storage/v1/`、Realtime `wss://abc123def.supabase.co/realtime/v1/`。
- 将结果保存到 `.sb-pentest-context.json`,包含 `supabase.project_url`、`supabase.project_ref`、`supabase.region`、`supabase.endpoints`(`rest`、`auth`、`storage`、`realtime`、`functions`)和 `supabase.sources`(`file`、`line`、`context`)。
- 如果发现多个 Supabase URL,输出警告 `Multiple Supabase projects detected`。
- 列出每个 URL,标注 primary(引用最多)或 secondary,并记录来源文件。
- 使用 primary URL 进行进一步分析。
- 如果要使用其他 URL,手动指定。
- 进行格式检查,匹配预期 Supabase URL 模式。
- 进行可达性检查,尝试访问 REST API endpoint。
- 进行响应验证,确认响应符合 Supabase 模式。
- 输出验证结果,包括 Format、Reachable、Confirmed。
- 如果尽管检测到 Supabase 但 URL 未找到,判断 URL 可能在动态加载的 chunk 中,并执行 `Extract URL with deep scan from https://myapp.example.com`。
- 如果找到 URL 但验证失败,记录该 URL;项目可能已暂停或区域存在连接问题。
- 如果只找到自定义域名,记录为自定义域名,并尝试识别底层项目。
- 只读取公开可用代码。
- 不尝试认证。
- 在安全说明中注明:URL 本身不授予访问权限,还需要 key。
- 提取后运行 `supabase-extract-anon-key` 查找 API key。
- 运行 `supabase-extract-service-key` 检查是否泄露 service key。
- 继续执行 API auditing skills。
- 在任何动作开始前,将动作记录到 `.sb-pentest-audit.log`。
- 每次发现后,立即更新 `.sb-pentest-context.json`。
- 每个重要步骤后,将完成情况记录到 `.sb-pentest-audit.log`。
- 按格式记录到 `.sb-pentest-audit.log`:`[TIMESTAMP] [supabase-extract-url] [START] Beginning URL extraction`、`[TIMESTAMP] [supabase-extract-url] [SUCCESS] URL extracted: https://[ref].supabase.co`、`[TIMESTAMP] [supabase-extract-url] [CONTEXT_UPDATED] .sb-pentest-context.json updated`。
- 创建证据目录 `.sb-pentest-evidence/02-extraction/`。
- 在证据目录创建 `extracted-url.json`,包含 URL 提取详情和来源位置。
- 证据 JSON 包含 `evidence_id`、`timestamp`、`category`、`type`、`extracted_data`、`sources`、`endpoints_discovered`。
- 证据的 `extracted_data` 包含 `project_url`、`project_ref`、`region`;`sources` 包含 `file`、`line`、`context`;`endpoints_discovered` 包含 `rest`、`auth`、`storage`、`realtime`。
- 相关技能中,先用 `supabase-detect` 检测 Supabase 使用,再提取 URL。
适用边界 · 注意事项
- 目标 URL 不可访问,或无法获取客户端 JavaScript、HTML、配置文件时,不适用。
- 尚未检测或怀疑目标使用 Supabase 时,不适用;应先运行 `supabase-detect`。
- 只有服务端代码且没有公开客户端构建产物、HTML 或 JavaScript 可扫描时,不适用。