调研探索
需要从客户端代码、cookies…
适用于对已确认使用 Supabase 的目标前端进行 JWT 提取、解码声明并评估安全风险。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
需要从客户端代码、cookies、loc特定
解决思路
- 从客户端代码、cookies、localStorage/sessionStorage 中提取 Supabase 相关 JWT。
- 若尚未完成 Supabase 检测,先自动调用检测确认目标使用 Supabase。
- 开始任何动作前,向 .sb-pentest-audit.log 写入动作日志;每个动作前后都要记录。
- 每发现一个 JWT 后立即更新 .sb-pentest-context.json,不要等技能结束才批量写入;若文件不存在则先创建。
- 在客户端代码中搜索静态 Supabase API key JWT,例如 const SUPABASE_KEY = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...'。
- 搜索硬编码用户令牌,例如 const userToken = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...',并将其标记为问题。
- 搜索存储键模式,例如 localStorage.getItem('supabase.auth.token')、localStorage.getItem('sb-abc123-auth-token')、sessionStorage.getItem('supabase_session')。
- 对目标应用执行基础提取:从 https://myapp.example.com 提取 JWT。
- 如需声明分析,执行:从 https://myapp.example.com 提取并分析所有 JWT。
- 解码每个 JWT 的 header,记录 alg、typ。
- 解码每个 JWT 的 payload,分析标准声明:sub、email、role、exp、iat。
- 分析 Supabase 特有声明:ref、iss、aal、amr。
- 按类型分类 JWT:Anon Key(API 认证,客户端暴露可预期)、Service Role Key(管理访问,绝不应暴露)、Access Token(用户会话,仅应动态出现)、Refresh Token(令牌续期,仅应动态出现)。
- 发现 role: service_role 时标记为 P0,并立即轮换密钥。
- 发现硬编码用户令牌且包含 PII(如 email、sub 可见)时标记为 P1,从代码中移除并可能通知用户。
- 发现代码中过期测试令牌时标记为 P2,清理并评估潜在信息泄露。
- 输出结构化结果,包含 Found 数量、JWT 编号、类型、状态、Header、Payload、Location,例如 /static/js/main.js:1247。
- 处理 JWT 截断:JWT 可能跨多行,尝试重新拼接。
- 处理 JWT 无法解码:可能是 JWE 或自定义格式,记录为 undecodable。
- 处理误报:对类似 JWT 的 Base64 字符串验证结构。
- 修复硬编码令牌:不要硬编码 adminToken;使用 const { data: { session } } = await supabase.auth.getSession() 获取会话,并在请求头中使用 Bearer ${session.access_token}。
- 将提取结果写入 .sb-pentest-context.json 的 jwts 字段,包含 found、api_keys、user_tokens、storage_patterns;其中 api_keys 记录 type、project_ref、location,user_tokens 记录 type、hardcoded、severity、claims、expired、location,storage_patterns 记录 pattern、storage、location。
- 向 .sb-pentest-audit.log 写入日志,格式如 [TIMESTAMP] [supabase-extract-jwt] [START] Beginning JWT extraction、[TIMESTAMP] [supabase-extract-jwt] [SUCCESS] Found 3 JWTs、[TIMESTAMP] [supabase-extract-jwt] [CONTEXT_UPDATED] .sb-pentest-context.json updated。
- 创建证据目录 .sb-pentest-evidence/02-extraction/。
- 创建证据文件 extracted-jwts.json,记录所有 JWT 及其分析。
- 在 extracted-jwts.json 中写入 evidence_id、timestamp、category、type、jwts_found、storage_patterns_found。
- 在 jwts_found 中每项记录 type、severity、location、decoded_payload、expired、issue;在 storage_patterns_found 中每项记录 pattern、location。
- 在证据中对 PII 脱敏,例如 sub: '[REDACTED]'、email: '[REDACTED]@example.com'。
适用边界 · 注意事项
- 目标未使用 Supabase,或不存在 Supabase 相关 JWT。
- 无法访问目标应用的前端代码、cookies 或 localStorage/sessionStorage。
- 只需专门提取 anon key 或 service key 时,应使用更专门的技能。