IDOR(不安全的直接对象引用)
2022-07-12 15:03:24

Insecure Direct Object References(不安全的直接对象引用)

定义IDOR

  1. 验证方法 通过修改用于直接指向对象的参数直接访问
  2. 影响 可以绕过权限,直接访问系统的资源
  3. 原因 因为应用程序接受用户提供的输入并使用它检索对象,而没有足够的授权检查。

如何测试

确认位置: 需要绘制出程序中所有使用用户输入直接引用对象的位置

改参数: 修改用于引用对象的参数的值,并评估是否可以检索属于其他用户的对象多绕过权限。

通过多用户的数据访问权限验证:

建议用2个用户(或相同角色 猜测是否能访问他人数据)(或不同角色 测试权限控制)

测试直接对象引用的最佳方法是让至少两个(通常更多)用户覆盖不同拥有的对象和功能。例如,两个用户各自有权访问不同的对象(如购买信息、私人消息等),以及(如果相关)具有不同权限的用户(如管理员用户),以查看是否存在对应用程序功能的直接引用。

参数的值直接用于检索数据库记录

已知:2个用户数据,例如有2个policyid,然后检查是否可以在未经授权的情况下访问对象。

参数值直接用于在系统中执行操作

已知:2个用户username,修改用户密码(不要求当前密码)

在许多情况下,此步骤将是向导或多步骤操作的一部分。在第一步中,应用程序将收到一个请求,说明要更改哪个用户的密码,在下一步中,用户将提供一个新密码(不要求当前密码)

用户参数用于直接引用将为其执行密码更改操作的用户的对象。

测试方法:

http://foo.bar/changepassword?user=someuser

修改user 为非当前登陆的用户名,检查是否可以修改另一个用户的密码

参数的值直接用于检索文件系统资源

http://foo.bar/showImage?img=img00011

测试方法:是否能够检索属于其他用户的对象()。

为了测试这种情况,测试人员应该准备一个当前用户不应该能够访问的引用对象,并尝试使用它作为文件参数的值来访问它。注意:此漏洞通常与目录/路径遍历漏洞一起被利用(请参阅路径遍历测试)

参数的值直接用于访问应用程序功能

http://foo.bar/accessPage?menuitem=12

已知菜单访问对应id:1、2、3……,

测试方法:假设用户受到限制,只有访问菜单项1、2和3的链接可用。通过修改menuitem参数的值,是否可以绕过授权并访问其他应用程序功能

参照:https://www.cnblogs.com/ww-xiaowei/p/16056168.html

上一页
2022-07-12 15:03:24