手机上怎么买彩票双色球 微信上有人推荐买彩票 能合买彩票的平台 夫妻买彩票狂中30亿 买彩票心态 买彩票就买大乐透开奖结果 哪个平台买彩票安全吗 买彩票有买一个号的吗 怎么看走势图买彩票 如何在电脑上买彩票 美国几岁可以买彩票? 福彩工作人员买彩票 彩客网买彩票 能在微信上买彩票吗 怎么买彩票容易中

三种对CORS错误配置的利用方法

来源:本站整理 作者:佚名 时间:2019-04-24 TAG: 我要投稿

同源策略(SOP)限制了应用程序之间的信息共享,并且仅允许在托管应用程序的域内共享。这有效防止了系统机密信息的泄露。但与此同时,也带来了另外的问题。随着Web应用程序和微服务使用的日益增长,出于实用目的往往需要将信息从一个子域传递到另一个子域,或者在不同域之间进行传递(例如将访问令牌和会话标识符,传递给另一个应用程序)。
为了允许跨域通信,开发人员必须使用不同的技术来绕过SOP并传递敏感信息,以至于现今也成为了一个棘手的安全问题。因此,为了在不影响应用程序安全状态的情况下实现信息共享,在HTML5中引入了跨源资源共享(CORS)。但问题也随之而来,许多人为了方便干脆直接使用默认的配置,或是由于缺乏对此的了解而导致了错误的配置。
因此,作为安全分析师/工程师,了解如何利用错误配置的CORS标头非常重要。这也将有助于你在灾难发生之前更好地对其进行补救。
什么是 CORS?
CORS?#19988;?#20010;W3C标准,全称是”跨域资源共享”(Cross-origin resource sharing)。它允许浏览器向跨源(协议 + 域名 + 端口)服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制。
CORS需要浏览器和服务器同时支持。它的通信过程,都是浏览器自动完成,不需要用户参与。对于开发者?#27492;擔珻ORS通信与同源的AJAX通信没有差别,代码完全一样。浏览器一旦发现AJAX请求跨源,就会自动添加一些附加的头信息,有时还会多出一次附加的请求,但用户不会有感觉。
因此,实现CORS通信的关键是服务器。只要服务器实现了CORS接口,就可以跨源通信。
关键 CORS 标头
有许多与CORS相关的HTTP标头,但以下三个响应标头对于安全性最为重要:
Access-Control-Allow-Origin:指定哪些域可以访问域资源。例如,如果requester.com想要访问provider.com的资源,那么开发人员可?#20801;?#29992;此标头安全地授予requester.com对provider.com资源的访问权限。
Access-Control-Allow-Credentials:指定浏览器是否将使用请求发送cookie。仅当allow-credentials标头设置为true时,才会发送Cookie。
Access-Control-Allow-Methods:指定可?#20801;?#29992;哪些HTTP请求方法(GET,PUT,DELETE等)来访问资源。此标头允许开发人员通过在requester.com请求访问provider.com的资源时,指定哪些方法有效来进一步增强安全性。
三个攻击场景
利用CORS标头中错误配置的通配符(*)
最常见的CORS配置错误之一是错误地使用诸如(*)之类的通配符,允许域请求资源。这通常设置为默?#29616;擔?#36825;意味着任何域都可以访问此站点上的资源。例如:
GET /api/userinfo.php
Host: www.victim.com
Origin: www.victim.com
当你发送上述请求时,你将获得具有Access-Control-Allow-Origin标头设置的响应。请参阅以下响应代码。
HTTP/1.0 200 OK
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true
在此示例中,标头配置了通配符(*)。 这意味着任何域都可以访问资源。
在测试我们客户的Web应用程序时,我们注意到了这种错误配置。我们能够利用它来获取用户信息,如姓名,用户ID,电子邮件ID,并能够将此信息发送到外部服务器。在下图中,我们将REQUEST Origin从受害者域修改为攻击者域。

以下是我们收到的响应,这意味着受害域允许访问来自所有站点的资源。我们的攻击案例中的Testing.aaa.com网站。

由于该站点共享来自任何站点的信息,因此让我们进一步的使用我们自己的域来利用它。我们创建了名为https://testing.aaa.com的域,并将其嵌入漏洞利用代码,?#21592;?#20174;?#36164;?#25915;击的应用程序中窃取机密信息。当受害者在浏览器中打开https://testing.aaa.com时,它会检索敏感信息并发送给攻击者的服务器。以下是我们可?#20801;?#38598;到的信息,如下图所示。

将信任域通配符作为 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
考?#19988;?#19979;开发人员是否配置了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”信?#25105;灾?#26426;名“requester.com”结尾的所有来源,例如“attackerrequester.com”。 因此,我们将origin头部篡改为attackerrequester.com并继续执行请求。

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

[1] [2]  下一页

【声明】:黑吧安全网(http://www.rliwo.live)?#31363;?#27492;文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱[email protected],我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类?#35753;?/li>
        • 最近?#30053;?/li>
        购买彩票权威网址
        手机上怎么买彩票双色球 微信上有人推荐买彩票 能合买彩票的平台 夫妻买彩票狂中30亿 买彩票心态 买彩票就买大乐透开奖结果 哪个平台买彩票安全吗 买彩票有买一个号的吗 怎么看走势图买彩票 如何在电脑上买彩票 美国几岁可以买彩票? 福彩工作人员买彩票 彩客网买彩票 能在微信上买彩票吗 怎么买彩票容易中
        浙江20选5规则 mg游戏幸运锦鲤攻略 御龙在天龙魂有什么用 逐鹿三国官网 德甲联赛云达不莱梅对沙尔克04 pc蛋蛋赚q币 沙巴体育论坛 奇才VS森林狼 意大利帕尔马旅游 英雄联盟直播