SupabaseURL提取技能Skill supabase-extract-url

这个技能用于从Web应用程序的客户端代码中提取Supabase项目URL,是渗透测试和安全审计的关键步骤,帮助识别API端点进行进一步测试。关键词:Supabase URL提取,渗透测试,安全审计,API安全,网络安全扫描。

渗透测试 0 次安装 0 次浏览 更新于 3/18/2026

名称: supabase-extract-url 描述: 从客户端JavaScript代码、环境变量和配置文件中提取Supabase项目URL。

Supabase URL提取

🔴 关键:需要逐步文件更新

您必须随着进展写入上下文文件,而不仅仅是在最后。

  • 每次发现后立即写入.sb-pentest-context.json
  • 每次操作前后记录到.sb-pentest-audit.log
  • 不要等到技能完成才更新文件
  • 如果技能崩溃或中断,所有先前发现必须已保存

这是强制性的。不逐步写入是关键错误。

这个技能从Web应用程序的客户端代码中提取Supabase项目URL。

何时使用此技能

  • 检测到Supabase使用后,以获取确切的项目URL
  • 当您需要API基础URL进行进一步测试时
  • 识别应用程序使用的Supabase项目

前提条件

  • 目标URL可访问
  • Supabase使用已检测(或怀疑)

工作原理

技能扫描URL模式在:

1. JavaScript源代码

// 直接URL引用
const SUPABASE_URL = 'https://abc123.supabase.co'
createClient('https://abc123.supabase.co', key)

// 环境变量模式
process.env.SUPABASE_URL
process.env.NEXT_PUBLIC_SUPABASE_URL
import.meta.env.VITE_SUPABASE_URL

2. HTML元标签和脚本

<meta name="supabase-url" content="https://abc123.supabase.co">
<script>
  window.SUPABASE_URL = 'https://abc123.supabase.co'
</script>

3. 配置对象

const config = {
  supabase: {
    url: 'https://abc123.supabase.co'
  }
}

URL模式匹配

识别的模式:

模式 示例
标准 https://abc123.supabase.co
带区域 https://abc123.eu-central-1.supabase.co
自定义域名 通过API端点模式检测

用法

基本提取

从 https://myapp.example.com 提取Supabase URL

从本地文件

如果您已下载源代码:

从 ./dist/assets/ 提取Supabase URL

输出格式

═══════════════════════════════════════════════════════════
 SUPABASE URL 已提取
═══════════════════════════════════════════════════════════

 项目URL: https://abc123def.supabase.co
 项目引用: abc123def
 区域: us-east-1 (推断)

 发现位置:
 ├── /static/js/main.abc123.js (行 1247)
 │   └── const SUPABASE_URL = 'https://abc123def.supabase.co'
 │
 └── /static/js/chunk.def456.js (行 89)
     └── createClient('https://abc123def.supabase.co', ...)

 API端点:
 ├── 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
═══════════════════════════════════════════════════════════

上下文输出

保存到.sb-pentest-context.json

{
  "supabase": {
    "project_url": "https://abc123def.supabase.co",
    "project_ref": "abc123def",
    "region": "us-east-1",
    "endpoints": {
      "rest": "https://abc123def.supabase.co/rest/v1/",
      "auth": "https://abc123def.supabase.co/auth/v1/",
      "storage": "https://abc123def.supabase.co/storage/v1/",
      "realtime": "wss://abc123def.supabase.co/realtime/v1/",
      "functions": "https://abc123def.supabase.co/functions/v1/"
    },
    "sources": [
      {
        "file": "/static/js/main.abc123.js",
        "line": 1247,
        "context": "const SUPABASE_URL = 'https://abc123def.supabase.co'"
      }
    ]
  }
}

多个URL

如果找到多个Supabase URL:

═══════════════════════════════════════════════════════════
 找到多个SUPABASE URL
═══════════════════════════════════════════════════════════

 ⚠️  检测到多个Supabase项目

 1. https://abc123.supabase.co (主要 - 最多引用)
    └── 发现位置: main.js, config.js

 2. https://xyz789.supabase.co (次要)
    └── 发现位置: analytics.js

 使用主要URL进行进一步分析。
 要使用不同URL,请手动指定。
═══════════════════════════════════════════════════════════

验证

技能通过以下方式验证提取的URL:

  1. 格式检查 — 匹配预期的Supabase URL模式
  2. 可达性检查 — 尝试访问REST API端点
  3. 响应验证 — 确认Supabase样式的响应
验证:
├── 格式: ✅ 有效的Supabase URL格式
├── 可达: ✅ REST API响应 (200 OK)
└── 确认: ✅ 响应匹配Supabase模式

常见问题

问题: 尽管检测到Supabase,但未找到URL ✅ 解决方案: URL可能在动态加载的块中。尝试:

从 https://myapp.example.com 进行深度扫描提取URL

问题: 找到URL但验证失败 ✅ 解决方案: 项目可能已暂停或区域连接问题。URL仍被记录。

问题: 仅找到自定义域名 ✅ 解决方案: 自定义域名有效。技能将标记为自定义域名并尝试识别底层项目。

安全说明

  • 此技能仅读取公开可用代码
  • 不尝试身份验证
  • URL本身不授予访问权限(还需要密钥)

后续步骤

提取URL后:

  1. 运行supabase-extract-anon-key以查找API密钥
  2. 运行supabase-extract-service-key以检查泄露的服务密钥
  3. 继续API审计技能

强制:逐步上下文文件更新

⚠️ 此技能必须在执行期间逐步更新跟踪文件,而不是仅在最后。

关键规则:逐步写入

不要在最后批量写入所有内容。相反:

  1. 在开始任何操作前 → 将操作记录到.sb-pentest-audit.log
  2. 在每次发现后 → 立即更新.sb-pentest-context.json
  3. 在每次重要步骤后 → 将完成记录到.sb-pentest-audit.log

这确保如果技能中断、崩溃或超时,所有截至该点的发现都得以保存。

所需操作(逐步)

  1. 更新.sb-pentest-context.json 包含提取的数据:

    {
      "supabase": {
        "project_url": "https://[ref].supabase.co",
        "project_ref": "[ref]",
        "endpoints": { ... }
      }
    }
    
  2. 记录到.sb-pentest-audit.log

    [时间戳] [supabase-extract-url] [开始] 开始URL提取
    [时间戳] [supabase-extract-url] [成功] URL已提取: https://[ref].supabase.co
    [时间戳] [supabase-extract-url] [上下文已更新] .sb-pentest-context.json 已更新
    
  3. 如果文件不存在,在写入前创建它们。

不更新上下文文件是不可接受的。

强制:证据收集

📁 证据目录: .sb-pentest-evidence/02-extraction/

要创建的证据文件

文件 内容
extracted-url.json URL提取详细信息,包含源位置

证据格式

{
  "evidence_id": "EXT-URL-001",
  "timestamp": "2025-01-31T10:05:00Z",
  "category": "extraction",
  "type": "url_extraction",

  "extracted_data": {
    "project_url": "https://abc123def.supabase.co",
    "project_ref": "abc123def",
    "region": "us-east-1"
  },

  "sources": [
    {
      "file": "/static/js/main.js",
      "line": 1247,
      "context": "const SUPABASE_URL = 'https://abc123def.supabase.co'"
    }
  ],

  "endpoints_discovered": {
    "rest": "https://abc123def.supabase.co/rest/v1/",
    "auth": "https://abc123def.supabase.co/auth/v1/",
    "storage": "https://abc123def.supabase.co/storage/v1/",
    "realtime": "wss://abc123def.supabase.co/realtime/v1/"
  }
}

相关技能

  • supabase-detect — 首先检测Supabase使用
  • supabase-extract-anon-key — 提取匿名密钥
  • supabase-extract-service-key — 检查服务密钥泄露