API水平越权和垂直越权漏洞分析

          很多客户让我来讲一下越权漏洞的一个挖掘。首先我们来了解一下,这个越权漏洞那到底是一个什么样子的漏洞,我们来看一下,越权漏洞就是超越设定权限而控制去访问未经授权的这个功能或者说数据,这个就称为越权。在后面由于超越设定的这个权限和控制区访问未授权的这么一个功能和数据而产生的这么一个漏洞叫这个越权漏洞。那它有什么危害。

首先通过越权漏洞的话,我们可以去访问其他用户的一些信息,查看他的这购物车里面的这些购物情况,或者说去查看它的一个地址信息,还有就是他个人中心的设置的这么一些信息,查看敏感文件,甚至修改其他用户了这么一个数据,也就是我们可以通过越权去修改账号密码,或者说修改个性签名等等,甚至更改他这个访问权限也是可以做得到的。

那我们来思考一下,为什么会产生越权漏洞?我列了三个原因,首先过度信任用户的这个输入,造成了就是用户可以对当前的这个变量是可控的,如果你要产生漏洞,这个变量必须是你可以控制的,如果这个变量你不可以控制,那你就没有办法进行正常的一个漏洞利用了。

那第二点,就是权限控制存在缺陷,有一些框架,或者是说它的一个逻辑,对这个权限校验的不完整,或者说存在缺陷而导致它存在越权漏洞。那还有的就是它的这么一个配置,导致这么一个缺陷。那这里的话给大家提示一下,我们一定要防御这么一些漏洞的时候,一定要坚持一个原则,就是对用户输入的这个内容采取这么一个零信任的一个原则,就是我把你输入的内容都假设为是一个恶意的,或者说到威胁性的这么一个输入,此时的话,我们要面对的如何去对这么一个文本内容去进行杀毒,或者说进行这么一个逻辑的处理。

让他恢复成一些不带威胁的,或者说没有对应的一个破坏性的这么一个数据命令或者说参数值,我这里的话将越权漏洞分类为两类。首先是水平越权,然后就是垂直越权。我们等一下的话,来讲解一下这两类越权。首先我们来了解一下这个水平越权,也就是访问相同权限的其他用户的这么一个数据修改拥有相同权限的这个其他用户的数据。我们举个例子,什么叫相同权限,那假设a用户和b用户它在某公司做这个销售,他们的这个职位都是销售,但是他们接触到的这些客户,或者说他们寻找一些客户的这些资料或者说资源,大家是不一样的,但是他们在这个在公司行使的这个权限是一样的,它不可能说去行使总经理或者说主管的人的这么一个权限。

而如果此时 a用户能够去访问b用户就是这个销售的这么一个资料了,是不是这种叫水平越权,就是大家权限对等的时候,去越权访问其他用户的这么一个数据,甚至修改了这么一个数据的时候,就称为水平越权。这里对应的是这么一个数据,然后它又对应的是这个数据。如果我们能够越权访问到它的这么一个数据的话,就称为水平越权。这里有一个前提条件就是造成水平越权的前提条件就是他们必须是相同权限,就是大家的权限是对等的,这样才叫水平越权,否则的话就称为这个垂直越权。

我们来看一下,垂直越权就是指一个低权限的用户,尝试去访问一个高权限的用户的一个资源,或者说一个高权限的用户去访问低权限的这么一个用户资源。举个案例,我们一个普通职员,如果去行使主管的这么大权利的话,或者说他的权限的话,是不是此时的话就向上越权,你本来没有这个权限,但是由于存在越权,你就去行使了你主管的这么一个权利,这样的话是不是就成为向上越权,因为你本来是一个低权限的用户,你就向上提升了这个权限。

而什么是向下越权,就是比你等级要低的。例如一些保洁员,他在公司的这个地位肯定是比你要低了,你是普通职员,应该就属于底层劳动力的那种,但是在更底层就有这么一些保洁员,或者说这些清洁阿姨,他们可以拥有了这个权限,或者说权利是更小的,如果你们去行使保洁员,或者说去行使保洁阿姨的这么一个权限的时候,这种就像向下越权,如果觉得这个案例不明白的话,我们举另外一个案例,如果一个县它的县长向上去行使的是市长的这么一个权利,那这种是不是叫向上越权。县长去行使的是村长的这么一个权利,只是是不是向下越权,好,我们讲完这个概念之后大家只需要记住我一句话就行了,确定关键可控参数,坚持参数同变同控原则,讲的很术语化,或者说很难理解。

分享: