缓存配置错误导致授权绕过

admin 2024年8月30日13:44:53评论14 views字数 1492阅读4分58秒阅读模式


Track安全社区投稿~

千元稿费!还有保底奖励~(https://bbs.zkaq.cn)

一个电子商务网站它有 2 个资产
target.com admin.target.com

target.com是面向用户的门户,用户可以去那里购买物品。admin.target.com基本上是卖家的管理门户,卖家可以在其中列出他们的物品,跟踪订单、客户信息等。

我通常使用 Autorize 进行测试,如果权限较低的用户能够访问管理端点,Autorize 将把它标记为“已绕过”。

缓存配置错误导致授权绕过 通过将普通用户 cookietarget.com放入 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 将端点标记为“绕过”,这意味着即使是普通用户也能够发出此请求并访问我的商店的订单信息。

但是,当我将该请求发送到中继器并尝试使用用户 cookie 发出请求时,出现了错误。

缓存配置错误导致授权绕过

授权表示绕过,中继器表示禁止,我认为这是授权中的一个故障,因此继续进行。在我测试该程序的整个一周时间里,这种情况一直在发生。Autorize 一直显示GetOrders端点为“已绕过”,但是当我将请求发送到中继器并测试时,它给了我错误403 forbidden此时,我确信这不是 Autorize 的问题,我只是忽略了一些东西。然后我明白了Autorize 和 Repeater 之间的唯一区别是时间间隔,虽然他们都有相同的 cookie/token。Autorize 立即呼叫管理端点。而我从中继器发出请求则需要一些时间。为了验证我的理论:GetOrders我使用管理员令牌向端点发出了请求。

POST /graphql
主机:admin.target.com
身份验证:Bearer admin 

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

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

POST /graphql
主机:admin.target.com
身份验证:持有者用户

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

我能够获得该商店的所有订单信息,包括客户详细信息。因此,如果攻击者在普通商店管理员使用其管理门户时同时发出请求,攻击者只需使用即可获取属于任何商店的所有订单/客户信息shop_id一个可公开访问的 ID。

创建一个简单的 bash 脚本,该脚本将GetOrders全天向端点发出持续请求每当管理员访问他们的门户时,订单/客户信息就会被缓存 3/4 秒的窗口,从而允许攻击者获取这些信息并绕过所有访问控制限制。

缓存配置错误导致授权绕过

同时我admin.target.com以 adminUser 身份登录并正常访问admin.target.com/orders代表管理员在后台发出了graphql 请求,GetOrders该请求可缓存 3/4 秒。存的响应最终被一分钟前出现 403 错误的同一个入侵者获取。

原文始发于微信公众号(白帽子左一):缓存配置错误导致授权绕过

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

发表评论

匿名网友 填写信息