标题 简介 公开时间
关联规则 关联知识 关联工具 关联文档 关联抓包
参考1(官网)
参考2
参考3
详情
[SAFE-ID: JIWO-2019-2383]   作者:hudie 发表于[2019-05-11]

本文共 [77] 位读者顶过

将信任域通配符作为 Origin

另一种常见的错误配置是允许与部分验证的域名共享信息。例如,以下请求:

GET /api/userinfo.php Host: provider.com Origin: requester.com

响应如下:

HTTP/1.0 200 OK Access-Control-Allow-Origin: requester.com Access-Control-Allow-Credentials: true

考虑一下开发人员是否配置了CORS来验证“Origin headerURL,白名单域只是“requester.com”。现在,当攻击者发起如下请求时:

GET /api/userinfo.php Host: example.com Connection: close Origin: attackerrequester.com

服务器会响应:

HTTP/1.0 200 OK Access-Control-Allow-Origin: attackerrequester.com Access-Control-Allow-Credentials: true

发生这种情况的原因可能是后端配置错误,例如:

if ($_SERVER['HTTP_HOST'] == '*requester.com')

 { //Access data else{ // unauthorized access}

}

我们在客户的一个应用程序中遇到了这个问题。主机域“provider.com”信任以主机名“requester.com”结尾的所有来源,例如“attackerrequester.com”。因此,我们将origin头部篡改为attackerrequester.com并继续执行请求。

在以下响应中,相同的origin在响应Access-control-Allow-Origin标头中,这意味着provider.com域允许共享资源到以requester.com结尾的域。

 

因此,我们可以创建一个由列入白名单的域名组成的新域名。然后,将恶意站点嵌入利用代码从而获取受害者站点上的敏感信息。

使用 XSS 实现 CORS 的利用

开发人员用于对抗CORS利用的一种防御机制,是将频繁请求访问信息的域列入白名单。但这并不完全安全,因为只要白名单域中的一个子域易受到其他攻击(如XSS),那么也可以进行CORS利用。

让我们看一个示例,以下代码将允许requester.com的子域访问provider.com的资源配置。

if ($_SERVER['HTTP_HOST'] == '*.requester.com')

 { //Access data else{ // unauthorized access}

}

假设用户可以访问sub.requester.com而不是requester.com,并且sub.requster.com易受XSS攻击。那么用户就可以使用XSS来利用provider.com

我们在同一个域上托管了两个应用程序。CORS应用程序托管在testingcors.com上,另一个应用程序则托管在pavan.testingcors.com上,该应用程序易受XSS的攻击。

 

 

使用这个易受攻击的XSS子域,我们可以从testingcors.com上获取敏感信息。我们在“Name”参数中注入了恶意javascript payload。页面加载后,脚本将被执行,并从testingcors.com中获取敏感信息。

[出自:jiwo.org]

 

总结

CORS是上榜OWASP TOP 10的安全漏洞。在实现站点之间信息共享的过程中,人们往往会忽略CORS配置的重要性。作为开发人员或安全专家,了解此漏洞以及如何对它进行利用至关重要。

 

 

 

评论

暂无
发表评论
 返回顶部 
热度(77)
 关注微信