越权漏洞 IDOR 全称为 Insecure Direct Object Reference 不安全的直接对象参考
什么是IDOR漏洞?
应用程序中可以有许多变量,例如“ id”,“ pid”,“ uid”。尽管这些值通常被视为HTTP参数,但可以在标头和cookie中找到它们。
攻击者可以通过更改值来访问,编辑或删除任何其他用户的对象。此漏洞称为IDOR。
首先,它需要了解软件开发人员开发的应用程序流程。当登录用户进入Web /移动应用程序时,需要了解所有模块功能及其子模块功能。
同样重要的是要记住,此漏洞在安全测试中与XSS,CSRF一样严重,并且是一种不容易发现的漏洞(自动测试或手动测试)。
下图显示了用户和服务器之间的IDOR漏洞。
IDOR漏洞的影响
Bugcrowd VRT中的IDOR漏洞似乎是“依赖影响的变量 ”,因为它们的影响完全取决于您提交的错误。
但是我们根据我们的经验创建了一个有关IDOR漏洞影响的列表,如下所示。
P1 –帐户接管,访问非常重要的数据(例如信用卡)
P2 –更改/删除其他用户的公共数据,访问私人/公共重要数据(例如票证,发票,付款信息)
P3 –访问/删除/更改私人数据(有限的个人信息:姓名,地址等)
P4 –访问任何不重要的数据
IDOR漏洞的影响取决于项目经理的判断力。
用于辅助测试越权漏洞的工具:
Burpsuite的三款插件可用于辅助寻找越权漏洞。
- Autorize
- Authz(水平越权测试)
- AuthMatrix(垂直越权测试)
Authz插件可以查看其他用户的请求响应。因此,我们可以将X用户的请求发送到Authz并尝试以Y用户身份访问它的响应。
另外,我们可以为测试IDOR漏洞添加自定义标头,例如“ X-CSRF-Token”。
AuthMatrix插件允许通过注册应用程序中角色的cookie值或标头值来执行授权检查。
如果有API请求,则可以将Wsdler插件用于Burp Suite,SoapUI,Postman等。还可以尝试使用该工具尝试所有GET,POST,PUT,DELETE,PATCH请求以及成功和快速的API测试。
如何防止IDOR漏洞?
首先,在创建应用程序时,应该控制所有普通,ajax和API请求。例如,只读用户可以在应用程序中写入任何内容吗?还是非管理员用户可以访问并创建仅由管理员用户创建的API令牌?因此,要测试所有IDOR漏洞,您应该像黑客一样思考。
您可以为所有端点在您的应用程序上提供权限。如果您的“ privatesection”端点包括诸如“ / api / privatesection / admins”,“ / api / privatesection / console”,“ / api / privatesection / tokens”之类的API请求,则可以为非管理员用户阻止该端点。
同样,为了使攻击者的工作更加艰辛,甚至有时甚至阻止它,您可以使用哈希函数并使用哈希值代替常规数字或字符串。
部分内容翻译自: