CORS 利用方式
1. 简单 CORS 配置不当
这是最常见、最基本的 CORS 漏洞,通常由于管理员或开发者为了方便,而设置了过于宽松的白名单
a. Access-Control-Allow-Origin: *
这是最糟糕的配置。*
意味着服务器允许任何来源的域名进行跨域请求。攻击者可以利用这个漏洞,在自己的恶意网站上,发送带有受害者身份信息的请求到目标网站
-
利用方式:
- 攻击者在自己的恶意网站
evil.com
上,构造一个 JavaScript 请求 - 该请求的目标是
target.com
,并且带上了受害者的cookie
- 由于
target.com
允许所有来源,浏览器会发送请求,攻击者就可以获取到受害者的敏感信息,例如个人资料、账户余额等
- 攻击者在自己的恶意网站
-
PoC (Proof of Concept) 代码:
var xhr = new XMLHttpRequest(); xhr.withCredentials = true; // 携带 cookie xhr.open('GET', 'https://target.com/api/user-info', true); xhr.onload = function () { console.log(xhr.responseText); // 获取受害者数据 }; xhr.send();
b. Access-Control-Allow-Origin
的动态配置
有些网站会根据请求头的 Origin
字段,动态地将其回显到响应头中
- 原理:
- 攻击者发送一个请求,其
Origin
头部被设置为https://evil.com
- 如果服务器响应头中包含
Access-Control-Allow-Origin: https://evil.com
,则说明存在漏洞
- 攻击者发送一个请求,其
- 利用方式:
- 与
*
的情况类似,攻击者在evil.com
上发起请求 - 浏览器发送的请求头中包含
Origin: https://evil.com
- 服务器将
Origin
的值原样返回,浏览器认为这是一个合法的跨域请求,从而执行
- 与
- PoC 代码:
- 使用 Burp Suite 等工具,修改请求头的
Origin
字段,查看服务器的响应。
- 使用 Burp Suite 等工具,修改请求头的