前言
上一篇文章中,对逻辑漏洞进行了简单的描述,这篇文章简单的说一说逻辑漏洞中的越权漏洞。
参考文献《黑客攻防技术宝典Web实战篇第二版》
什么是越权漏洞?
顾名思义,越权漏洞就是由于设计上的缺陷对应用程序的权限做的不好。通俗点来说,就是用户A可以通过某种方式查看到用户B的个人信息,或者可以查看管理员C的一些相关信息。
分类
越权漏洞主要分为水平越权和垂直越权。下面来说一说他们的区别。
水平越权:就是攻击者尝试访问与他相同权限的用户的一些资源。举一个简单的例子,用户A在这个应用程序里保存了自己的个人信息,并且通过相关参数直接获取,用户B在保存个人信息的页面,输入了A用户的参数,直接查看到了A用户的个人信息。
为什么会出现这种情况呢?我们知道通常情况下,一个应用程序的功能流程是:登陆=>提交请求=>验证权限=>数据库查询=>返回结果。如果权限验证做的不好,就会出现越权。
都包括哪些情况呢?
比如直接对象引用,这种情况直接修改参数就可以发生越权,例如,我想查看A用户的信息,直接将URL后的参数改为A用户的就可以了。这里有一个实例,现在登陆张三用户,抓包如下图
现在将5改为2,然后发送数据包,我们发现用户变为1了
还有比如一个功能,多步实现,只在第一步验证用户身份,其他不用,这样攻击者直接跳过第一步,执行下面的操作。
还有如果对身份验证做的不完善,有可能在未登录的情况下,知道敏感页面URL可以直接访问。
垂直越权:也叫权限提升攻击,例如,用户A通过构造URL直接进入了管理员B的页面。
包括哪些情况呢?
比如设计者通过隐藏URL的方式,通过URL实现访问控制,这是最不靠谱的,要是攻击者猜出后台路径,直接歇菜。
修复建议
对于水平越权:
- 增加访问与操作对象的用户属性,在对目标对象进行访问与操作时,服务端校验会话与对象的用户属性,在校验通过后才能执行读取和操作。
- 页面进行严格的访问权限的控制以及对访问角色进行权限检查。
对于垂直越权:
- 采取默认拒绝机制,采取基于角色访问控制,对于各个功能的访问,规定不同角色拥有不同的访问权限,用户访问功能时,验证用户现在的权限和规定的权限是否相同,如果奴同,拒绝访问。
《黑客攻防技术宝典Web实战篇》对访问控制进行了整理,我拍了下来分享出来,如下图