IDOR 不仅仅是将 id=1 更改为 id=2
好吧,我们都习惯了这个,你在 idor 上搜索文章,几乎所有人都只是说他们将参数从 1 更改为 2。
IDOR 并没有那么简单,它们基本上是影响 CRUD 操作(创建、读取、更新、删除)的访问控制漏洞id
如何查找 IDOR
了解应用程序中基于角色和权限的 CRUD 操作。在 Web 应用程序中找到一个演示这一点的表,如下所示:
或者自己测试每个角色的每个 CRUD 操作,并创建这样的表来帮助你。
现在您应该看到谁有权执行 CRUD 操作,并从另一个无法执行的帐户执行该操作,如果您成功了,恭喜您找到了 IDOR。
现在让我们谈谈我的 4 个 bug
首先,您应该对这个目标有一个快速的概述,基本上它是一个包含公司的应用程序 - >包含组 - >每个组都包含成员 - >每个成员都有一个角色(管理员、支持、开发人员、仅查看)。
此外,每个成员都可以添加一个用于公司资金流动的银行账户(仅限查看除外)。
第一项:在没有邀请的情况下将任何用户添加到任何公司组
我已经写过了,看看吧:https://medium.com/p/965c180d2798
第二个错误:未经授权在任何公司创建银行账户
正如我所说,View-Only 用户无法创建银行账户,但我发现他们不仅可以在他们的公司创建银行账户,而且实际上任何用户都可以使用其 ID 将银行账户添加到任何公司。
POST /api/accounts HTTP/2 Cookie: <admin_cookie> X-Account-Id: <company_id> {"accountData": <some_data>}
我删除了管理员 cookie 并放置了一个仅限查看的用户 cookie,结果得到了 200 OK!当我放置甚至不在公司的用户的 cookie 时,也得到了相同的响应。
IDOR 导致未经授权的用户删除邀请
要在群组中添加成员,您必须向他们发送邀请,并且他们必须接受邀请,只有管理员才能删除此邀请。
这是发送的请求:
DELETE /api/invites/<invite_id> HTTP/2 Cookie: <admin_cookie> X-Account-Id: <company_id>
我首先问道:如何获取邀请函 ID?简单尝试:
GET /api/invites/ HTTP/2 Cookie: <my_cookie> X-Account-Id: <company_id>
并获取了响应中的所有邀请 ID,然后尝试通过用户的 cookie 发送请求,得到 200 OK!DELETE
View-Only
具有“支持”或“开发者”角色的会员可以删除任何银行账户
删除 Bank accounts 是仅允许用户执行的操作,起初我尝试使用帐户:Admin
view-only
DELETE /api/accounts/<account_id> HTTP/2 Cookie: <view-only-cookie> X-Account-Id: <company_id>
我收到了 403 Forbidden!这意味着攻击失败
我没有放弃,尝试了不允许这样做的用户,攻击成功了!Support
Developer
就是这样!希望你们今天学到了一些新东西,记住要始终尝试每个角色,甚至在您不所在的公司、组织或团体中尝试。此外,尝试每个操作,不要忘记创建一个表格来演示 CRUD 操作,以使测试更加清晰。和 Good Buy!
原文始发于微信公众号(安全狗的自我修养):我是如何在同一个目标中找到 4 个 IDOR 的
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论