逻辑漏洞之越权漏洞

前言

上一篇文章中,对逻辑漏洞进行了简单的描述,这篇文章简单的说一说逻辑漏洞中的越权漏洞。

参考文献《黑客攻防技术宝典Web实战篇第二版》

什么是越权漏洞?

顾名思义,越权漏洞就是由于设计上的缺陷对应用程序的权限做的不好。通俗点来说,就是用户A可以通过某种方式查看到用户B的个人信息,或者可以查看管理员C的一些相关信息。

分类

越权漏洞主要分为水平越权和垂直越权。下面来说一说他们的区别。

水平越权:就是攻击者尝试访问与他相同权限的用户的一些资源。举一个简单的例子,用户A在这个应用程序里保存了自己的个人信息,并且通过相关参数直接获取,用户B在保存个人信息的页面,输入了A用户的参数,直接查看到了A用户的个人信息。

为什么会出现这种情况呢?我们知道通常情况下,一个应用程序的功能流程是:登陆=>提交请求=>验证权限=>数据库查询=>返回结果。如果权限验证做的不好,就会出现越权。

都包括哪些情况呢?

比如直接对象引用,这种情况直接修改参数就可以发生越权,例如,我想查看A用户的信息,直接将URL后的参数改为A用户的就可以了。这里有一个实例,现在登陆张三用户,抓包如下图

 

现在将5改为2,然后发送数据包,我们发现用户变为1了

 

 

 还有比如一个功能,多步实现,只在第一步验证用户身份,其他不用,这样攻击者直接跳过第一步,执行下面的操作。

还有如果对身份验证做的不完善,有可能在未登录的情况下,知道敏感页面URL可以直接访问。

垂直越权:也叫权限提升攻击例如,用户A通过构造URL直接进入了管理员B的页面。

包括哪些情况呢?

比如设计者通过隐藏URL的方式,通过URL实现访问控制,这是最不靠谱的,要是攻击者猜出后台路径,直接歇菜。

 

修复建议

对于水平越权:

  • 增加访问与操作对象的用户属性,在对目标对象进行访问与操作时,服务端校验会话与对象的用户属性,在校验通过后才能执行读取和操作。                      
  • 页面进行严格的访问权限的控制以及对访问角色进行权限检查。

对于垂直越权:

  • 采取默认拒绝机制,采取基于角色访问控制,对于各个功能的访问,规定不同角色拥有不同的访问权限,用户访问功能时,验证用户现在的权限和规定的权限是否相同,如果奴同,拒绝访问。

《黑客攻防技术宝典Web实战篇》对访问控制进行了整理,我拍了下来分享出来,如下图

 

posted @ 2020-05-15 19:41  小艾搞安全  阅读(1787)  评论(0编辑  收藏  举报