【海外SRC挖掘】缓存配置错误而绕过授权

admin 2024年8月26日23:25:08评论46 views字数 2105阅读7分1秒阅读模式

正文部分

原文作者:x.com/rikeshbaniya

漏洞总结

这个漏洞是由于目标资产在开放的时候,可能为了响应速度,使用了返回数据的缓存,当管理员请求某个接口的时候,他会存在短时间的缓存,在缓存期间没有进行权限的检验,这时候如果使用普通用户的权限去访问该接口,也会直接返回缓存的信息,导致普通用户到管理员用户的越权

资产范围

一个电子商务网站,它有 2 个资产

target.com是面向用户的门户,用户可以在其中购买物品。

admin.target.com基本上是卖家的管理门户,他们可以在其中列出他们的商品、跟踪订单、客户信息等。

漏洞复现

我正在测试未授权和越权的时候。我通常使用 Autorize 来做这件事,这是一个自动测试越权的burp插件
工具下载:https://github.com/Quitten/Autorize

【海外SRC赏金挖掘】缓存配置错误而绕过授权,拿下严重2000刀!!

如果较低权限的用户能够点击管理端点,Autorize 会将其标记为 “bypassed”,也就意味可能存在漏洞

【海外SRC赏金挖掘】缓存配置错误而绕过授权,拿下严重2000刀!!

将普通用户 cookie 放入 Autorize 后,来检查普通用户是否可以越权管理员。

admin.target.com 在我测试期间发生了一些不寻常的事情。

在每次请求https://admin.target.com/orders接口的时候(他是一个graphql请求)

POST /graphql
Host: admin.target.com

{"operationName":"GetOrders","variables":{"shop_id":"X"},"query":"query X"}
响应包含我商店的所有订单信息。这是正常的。
但是,奇怪的是,Autorize 将端点标记为“bypassed”,这意味着即使是普通用户也能够发出此请求并访问我商店的订单信息。但是当我将该请求发送到 repeater 并尝试使用用户 cookie 发出请求时,它给出了一个错误。

【海外SRC赏金挖掘】缓存配置错误而绕过授权,拿下严重2000刀!!

autorize 表示 bypassed ,repeater 表示 forbidden。

我以为这是 autorize 内部的一个小故障,然后继续前进。在我测试程序的整个星期里,它一直在发生。Autorize 一直将端点显示为“bypassed”,但是当我过去将请求发送到 repeater 和 test 时,它给了我错误403 forbidden.

在这一点上,我确定这不是 Autorize 的问题,我只是遗漏了一些东西。后面根据不断的测试,发现了Autorize 和 Repeater 之间的唯一区别是时间间隔。虽然 Autorize 和 Repeater 都有相同的 cookie/token。但是Autorize 是被动的立即调用管理终端节点。而我向 repeater 发出请求需要一些时间。

为了检验我的理论:我使用 管理员权限 向终端节点发出了请求。

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"}

令我惊讶的是,我能够获得该商店的所有订单信息,包括客户详细信息。

总结:

服务器将响应缓存了 3/4 秒的非常短暂的时间,在这个缓存期间,普通用户和管理员用户获取到的都是管理员的返回信息,因此,如果攻击者在普通商店管理员使用其管理员门户的同时发出请求,则攻击者能够仅使用 shop_id 获取属于任何商店的所有订单/客户信息。

利用:

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

验证:

首先使用普通用户对接口进行访问,并且使用burp的intruder不断请求

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

{"operationName":"GetOrders","variables":{"shop_id":"X"},"query":"query X"}
它最初给出的回应是由于访问控制到位。403 forbidden

【海外SRC赏金挖掘】缓存配置错误而绕过授权,拿下严重2000刀!!

然后,以管理员身份登录并正常访问

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

{"operationName":"GetOrders","variables":{"shop_id":"X"},"query":"query X"}
这时候intruder返回的就不再是403 forbidden,而是变为了200,成果获取到管理员的数据!!

【海外SRC赏金挖掘】缓存配置错误而绕过授权,拿下严重2000刀!!

赏金

该问题被分类为严重问题,并在数小时内立即得到解决。

【海外SRC赏金挖掘】缓存配置错误而绕过授权,拿下严重2000刀!!
【海外SRC赏金挖掘】缓存配置错误而绕过授权,拿下严重2000刀!!

原文始发于微信公众号(fkalis):【海外SRC赏金挖掘】缓存配置错误而绕过授权,拿下严重2000刀!!

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

发表评论

匿名网友 填写信息