价值1.4 W人民币漏洞!

admin 2024年12月24日11:09:16评论4 views字数 1808阅读6分1秒阅读模式

价值1.4 W人民币漏洞!骚!缓存配置错误造成鉴权绕过

正文

这篇文章讲述了我最喜欢的一个漏洞发现,因为它是一个非常出乎意料的问题。

我当时在测试一个电子商务网站。

该网站有两个资产在测试范围内:

target.com 和 admin.target.com。

其中

target.com 是面向用户的门户,用户可以在上面购买商品。

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

我当时在测试 IDOR(不安全的直接对象引用)和访问控制。我通常使用 Autorize 工具来进行测试。

如果一个低权限的用户能够访问到管理端点,Autorize 会标记为“绕过”。

价值1.4 W人民币漏洞!
img

我将 target.com 的普通用户 Cookie 放入 Autorize 后,使用 admin.target.com 来检查普通用户是否能够访问管理员端点。

在测试过程中,发生了一些不寻常的事情。

每当我访问以下端点时:

https://admin.target.com/orders

都会触发以下的 GraphQL 请求

POST /graphqlHost: admin.target.com{"operationName":"GetOrders","variables":{"shop_id":"X"},"query":"query X"}

响应中包含了我店铺的所有订单信息。

这是预期的行为。

然而,奇怪的是,Autorize 将这个端点标记为“绕过”,这意味着即使是普通用户也能够发起这个请求并访问我店铺的订单信息。

但当我将这个请求发送到 Repeater 并尝试使用用户 Cookie 发起请求时,却返回了一个错误。

价值1.4 W人民币漏洞!
img

Autorize 显示“绕过”,而 Repeater 显示“禁止访问”。

我以为这是 Autorize 的一个故障,便继续测试。

整整一周,在测试这个程序时,这种情况一直在发生。

Autorize 一直把 GetOrders 端点标记为“绕过”,但当我将请求发送到 Repeater 测试时,依然返回 403 禁止访问错误。

此时,我确信这不是 Autorize 的问题,应该是我遗漏了什么。

然后我恍然大悟。

Autorize 和 Repeater 唯一的区别是时间间隔。

虽然它们都使用相同的 Cookie/Token,

但 Autorize 会立即调用管理员端点,而我在 Repeater 中发起请求时则需要一些时间。

为了验证我的猜想:

我使用管理员 Token 发起了对 GetOrders 端点的请求。

POST /graphqlHost: admin.target.comAuth: Bearer admin{"operationName":"GetOrders","variables":{"shop_id":"X"},"query":"query X"}

然后,我立即使用用户 Token 发起了相同的请求。

POST /graphqlHost: admin.target.comAuth: Bearer user{"operationName":"GetOrders","variables":{"shop_id":"X"},"query":"query X"}

事情的真相是:

服务器会将 GetOrders 的响应缓存大约 3 到 4 秒的时间。

所以,如果攻击者在普通商店管理员使用管理门户时,恰好在同一时间发起请求,攻击者就能够通过 shop_id 获取任何商店的所有订单和客户信息。

而 shop_id 是一个公开可访问的 ID。

漏洞利用

创建一个简单的 Bash 脚本,持续不断地发起对 GetOrders 端点的请求,

每当管理员访问他们的门户时,订单/客户信息会在 3 到 4 秒的时间窗口内被缓存,从而允许攻击者抓取这些信息,并绕过所有访问控制限制。

POC(概念验证

我使用我的 Intruder 工具,发起了带有用户 Token 的 GetOrders 请求。

最初由于存在访问控制,返回了 403 禁止访问响应。

价值1.4 W人民币漏洞!

与此同时,我以 adminUser 的身份登录了 admin.target.com,并正常访问了 admin.target.com/orders。

在后台,管理员的 GraphQL 请求(GetOrders)被触发,并且响应在 3 到 4 秒内可供缓存。

最终,同一个 Intruder 标签页(刚才还返回了 403 错误)成功地获取到了被缓存的响应。

价值1.4 W人民币漏洞!

这个问题被评估为严重漏洞,并在几小时内得到了迅速修复。

价值1.4 W人民币漏洞!

奖金令人羡慕,高达2k刀!

原文始发于微信公众号(迪哥讲事):价值1.4 W人民币漏洞!

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年12月24日11:09:16
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   价值1.4 W人民币漏洞!https://cn-sec.com/archives/3544844.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息