标题 | 简介 | 类型 | 公开时间 | ||||||||||
|
|||||||||||||
|
|||||||||||||
详情 | |||||||||||||
[SAFE-ID: JIWO-2024-2383] 作者: hudie 发表于: [2019-05-11]
本文共 [690] 位读者顶过
将信任域通配符作为 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 header”URL,白名单域只是“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配置的重要性。作为开发人员或安全专家,了解此漏洞以及如何对它进行利用至关重要。
|