Insecure direct object references (IDOR)
不安全的直接对象引用
什么是不安全的直接对象引用 (IDOR)?
不安全的直接对象引用 (IDOR) 是一种访问控制漏洞,当应用程序使用用户提供的输入直接访问对象时会出现这种漏洞。 IDOR 一词因出现在 OWASP 2007 前十名中而流行起来。然而,这只是许多访问控制实施错误中的一个例子,这些错误可能导致访问控制被规避。 IDOR 漏洞最常与水平权限提升相关,但它们也可能与垂直权限提升相关。
IDOR 示例
有许多访问控制漏洞的示例,其中用户控制的参数值用于直接访问资源或功能。
直接引用数据库对象的 IDOR 漏洞
考虑一个网站,它使用以下 URL 通过从后端数据库检索信息来访问客户帐户页面:
https://insecure-website.com/customer_account?customer_number=132355
在这里,客户编号直接用作对后端数据库执行的查询中的记录索引。如果没有其他控制措施,攻击者可以简单地修改 customer_number 值,绕过访问控制来查看其他客户的记录。这是导致水平权限提升的 IDOR 漏洞示例。
攻击者可能能够通过将用户更改为具有额外权限的用户同时绕过访问控制来执行水平和垂直权限提升。其他可能性包括利用密码泄漏或修改参数,例如,一旦攻击者登陆用户的帐户页面。
直接引用静态文件的 IDOR 漏洞
当敏感资源位于服务器端文件系统的静态文件中时,通常会出现 IDOR 漏洞。例如,网站可能会使用递增的文件名将聊天消息记录保存到磁盘,并允许用户通过访问如下 URL 来检索这些内容:
https://insecure-website.com/static/12144.txt
在这种情况下,攻击者可以简单地修改文件名来检索另一个用户创建的副本,并可能获取用户凭据和其他敏感数据。