什么是IDOR?
IDOR代表不安全直接对象引用,是一种访问控制漏洞。
当 Web 服务器接收用户提供的输入以检索对象(文件、数据、文档)、对输入数据过于信任并且未在服务器端进行验证以确认输入数据时,可能会发生此类漏洞。请求的对象属于请求它的用户。
IDOR示例
进入网站,看到一个表单,表单里有几个url,找到有参数那个,进入
将参数1234改为1000,爆出flag
编码 ID
当通过发布数据、查询字符串或 cookie 在页面之间传递数据时,Web 开发人员通常会首先获取原始数据并对其进行编码。编码可确保接收 Web 服务器能够理解内容。编码将二进制数据更改为 ASCII 字符串,通常使用a-z, A-Z, 0-9 and =
字符进行填充。网络上最常见的编码技术是 base64 编码,通常很容易发现。您可以使用https://www.base64decode.org/等网站来解码字符串,然后编辑数据并使用https://www.base64encode.org/重新编码,然后重新提交 Web 请求以查看是否响应发生变化。
请参阅下图作为此过程的图形示例:
哈希 ID
处理哈希 ID 比编码 ID 稍微复杂一些,但它们可能遵循可预测的模式,例如整数值的哈希版本。例如,如果使用 md5 哈希,则 ID 号 123 将变为 202cb962ac59075b964b07152d234b70。
值得将任何发现的哈希值通过网络服务(例如https://crackstation.net/)(其拥有数十亿哈希值结果的数据库)来查看是否可以找到任何匹配项。
不可预测的 ID
如果使用上述方法无法检测到Id,一个很好的IDOR检测方法是创建两个帐户并在它们之间交换Id号。如果您可以使用其他用户的 ID 号查看其内容,同时仍使用其他帐户登录(或根本未登录),那么您就发现了有效的IDOR漏洞。
IDOR位于哪里?
您所针对的易受攻击的端点可能并不总是您在地址栏中看到的内容。它可能是您的浏览器通过 AJAX 请求加载的内容,也可能是您在 JavaScript 文件中找到引用的内容。
有时端点可能有一个未引用的参数,该参数可能在开发过程中有用并被推入生产。例如,您可能会注意到对 /user/details 的调用 显示了您的用户信息(通过您的会话进行身份验证)。但通过称为参数挖掘的攻击,您会发现一个名为user_id的参数,您可以使用它来显示其他用户的信息,例如/user/details?user_id=123。
IDOR示例
打开网站注册账号,根据提示。来到Your Account页面。
显示我的账号信息
打开检查页面,找到网络选项
看到有参数的url,点击进入
根据题目要求,查看id=1和id=3
网友评论