概括
IDOR 代表“不安全的直接对象引用”。这是一种安全漏洞,当应用程序允许攻击者在未经适当授权的情况下通过修改输入参数(例如 URL)直接访问或操作资源时,就会出现这种漏洞。换句话说,攻击者可以绕过访问控制并获得对他们不应访问的对象(例如文件、数据库或其他资源)的未经授权的访问。
当应用程序依赖用户提供的输入来确定要检索哪个对象或资源但未正确验证或授权用户访问该对象时,通常会出现 IDOR 漏洞。当应用程序在 URL 或参数中公开内部标识符(例如数据库记录 ID)而没有正确检查当前用户是否有权访问这些资源时,就会发生这种情况。
漏洞概述
本网站有创建私人群组的功能,群组管理可以让其他用户通过发送邀请的方式访问该群组,一般情况下私人群组的信息是保密的,无法访问的。当您被邀请加入私人群组时,您可以在网站的一部分中看到您的邀请并接受或拒绝它们。当您单击“接受”时,将发送以下消息:
POST /GroupInvitations HTTP/1.1
Host: redacted.com
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:109.0) Gecko/20100101 Firefox/111.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: https://redacted.com/GroupActivity
Content-Type: application/x-www-form-urlencoded
X-Xsrf-Token: 6c2be6f7-3880-4652-951b-9ef779f201d6
Content-Length: 37
Origin: https://redacted.com
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin
Te: trailers
Connection: close
GroupInvitations&action=A&c2mId=7069
c2mId参数是被邀请组的代码,容易受到IDOR的攻击,攻击者通过将此值更改为upper或downer可以轻松访问其他私有组。
复现步骤
1.创建 3 个帐户:管理员、攻击者、用户。
2.使用经理帐户创建 2 个组。
3.邀请攻击者用户加入 A 组。
4.来自攻击者接受邀请并将请求发送到Burp Repeter。
5.返回管理员帐户并邀请用户加入B组。
6.返回Burp Repeter并在 c2mId 中添加一位数字。
7.转到攻击者帐户并查看 B 组。
作为一名经理,我创建了 2 个不同的组,Group-AAAA 和 Group-BBBB,它们都是私有的,因此其他用户无法发表评论和创建主题等。
我邀请攻击者加入 Group-AAAA,向您展示接受请求并将请求保存到 Burp 中继器的流程。因此攻击者可以访问 Group-AAAA。经理邀请了另一个用户加入 Group-BBBB,但攻击者没有邀请他们加入该组。
攻击者将c2mId值参数加1并发送请求。现在攻击者刷新了我组的页面。我们故事中的攻击者可以访问 Group-BBBB,并且可以留下评论、创建主题等。:D 我应该注意,c2mId 的值不是一种用途。即使普通用户接受创新,攻击者也可以再次使用该值来访问组。