一个值钱的漏洞报告 之 由于缓存配置错误导致的鉴权绕过

admin 2024年9月19日10:05:35评论19 views字数 1596阅读5分19秒阅读模式

新思路解锁🔓

这篇漏洞报告是我最喜欢的漏洞发现之一,因为这是一个非常出乎意料的问题导致的鉴权绕过。

当时我正在测试一个电商网站。它有 2 个资产 (网站均使用化名) target.comadmin.target.com

target.com是面向用户的门户站点,用户可以在这里购买物品。 admin.target.com是卖家的管理门户站点,卖家可以在这里管理他们的物品,跟踪订单、客户信息等。

我正在测试越权漏洞,通过在 burp 中使用 Autorize 插件进行测试。

如果权限较低的用户能够访问卖家管理站点接口,Autorize 将把它标记为“已绕过”。

一个值钱的漏洞报告 之 由于缓存配置错误导致的鉴权绕过

我将target.com普通用户 cookie 放入 Autorize,用它来检查普通用户是否可以访问管理端点admin.target.com

但在我的测试期间发生了一些奇怪的事情。

每次我访问 https://admin.target.com/orders,会发出以下 GraphQL 请求。

POST /graphql
主机:admin.target.com 

{“operationName”:“GetOrders”,“variables”:“shop_id”:“X”},“query”:“query X”}

这个请求的响应包含我店铺的所有订单信息,这是符合预期的行为。

Autorize 将端点标记为“绕过”,这代表普通用户也能够通过这个请求来访问道我的商店的订单信息。

于是我马上用将请求发送到burp的repeater中来重发请求,我再次测试使用普通用户 cookie 发出请求,但是 403 了?

一个值钱的漏洞报告 之 由于缓存配置错误导致的鉴权绕过

WTF! 嗯🤔

Autorize 显示可以绕过,但是我测试的时候响应的是403禁止,好吧,可能是插件的bug吧!

然后在我接下来测试这个网站的程好几天里,这个"BUG"一直在发生。Autorize 一直显示GetOrders端点为“已绕过”,但是当我将请求发送到repeater并测试时,响应的就是403 forbidden

此时此刻,我觉得真的太奇怪了,我觉得可能不是 Autorize 的问题,也许我忽略了什么。我对比了一下Autorize 和 Repeater 发出的请求,他们之间的唯一区别是请求时间。

虽然他们都有相同的 cookie/token, 但是实际测试中 Autorize 会立即请求卖家管理系统的接口,而我从repeater发出请求则是一段时间之后。

为了验证我的理论:

GetOrders我使用管理员令牌向端点发出了请求。

POST /graphql
Host: admin.target.com
Auth:Bearer admin

{"operationName":"GetOrders","variables":{"shop_id":"X"},"query":"query X"}

然后立即使用用户令牌发出相同的请求。

POST /graphql
Host: admin.target.com
Auth:Bearer user

{"operationName":"GetOrders","variables":{"shop_id":"X"},"query":"query X"}

这一次我是真的能够用 ''普通用户的权限'' 获得商店的所有订单信息,包括客户详细信息❕❕

真相大白

所以情况是:服务器的GetOrders接口在很短的时间 (3/4 秒内) 缓存了响应。

如果攻击者在卖家访问接口的同时发出请求,攻击者只需使用shop_id就可以获取属于任何店铺的所有订单/客户信息,而且shop_id一个可公开访问获取到的 ID。

攻击者只需要GetOrders创建一个简单的脚本,对不同的 shop_id 发出持续请求, 只要卖家访问了这个接口,订单/客户信息就会被缓存 3/4 秒的窗口,攻击者就可以绕过所有访问控制限制批量获取这些敏感信息。

原文始发于微信公众号(不懂安全):一个值钱的漏洞报告 之 由于缓存配置错误导致的鉴权绕过

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年9月19日10:05:35
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   一个值钱的漏洞报告 之 由于缓存配置错误导致的鉴权绕过https://cn-sec.com/archives/3182182.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息