概述:
如果使用A用户的权限去操作B用户的数据,A的权限小于B的权限,如果能够成功操作,则称之为越权操作。
越权漏洞形成的原因是后台使用了不合理的权限校验规则导致的。
一般越权漏洞容易出现在权限页面(需要登录的页面)增、删、改、查的的地方,当用户对权限页面内的信息进行这些操作时,后台需要对当前用户的权限进行校验,看其是否具备操作的权限,从而给出响应,而如果校验的规则过于简单则容易出现越权漏洞。
因此,在权限管理中应该遵守:
- 使用最小权限原则对用户进行赋权;
- 使用合理(严格)的权限校验规则;
- 使用后台登录态作为条件进行权限判断,别动不动就瞎用前端传进来的条件;
平行越权:A用户和B用户属于同一级别用户,但各自不能操作对方个人信息,,A用户如果越权操作B用户的个人信息的情况称为平行越权操作。
垂直越权:A用户权限高于B用户,B用户越权操作A用户的权限的情况称为垂直越权。
越权漏洞属于逻辑漏洞,是由于权限校验的逻辑不够严谨导致的。
每个应用系统其用户对应的权限是根据其业务功能划分的,而每个企业的业务又都是不一样的。
因此越权漏洞很难通过扫描工具发现,往往需要通过手动进行测试。
靶场:
水平越权:
1.进入页面,使用 lucy/123456登录账号,查看个人信息,
2.观察url发现是通过GET请求,将查询的用户信息传递到后端,
3.修改username为lili,个人信息发生改变,说明存在水平越权的漏洞
产生原因:
后台通过get请求获取到当前登录态的值后并没有进行严谨的校验权限对比(比如传进来的值是lili,通过校验后应该获取的是lili的信息),使得用户可以越权获取别的用户的个人信息。
垂直越权:
1.进入页面,登录超级管理员页面,
2.创建用户xiao,并且抓包发送至Repeater模块,
3.退出管理员账号,重放这个数据包,这时候用户是会添加失败的,因为没有登录状态
登录普通用户账号,取出当前账号的Cookie。
4.用上图中的Cookie修改我们刚刚发送到 Repeater 中那个数据包的 Cookie,再重放这个数据包。这时候就添加了另一个用户,第一个是超级管理员添加的;另一个是普通用户重放超级管理员的数据包添加的。
参考:
https://blog.csdn.net/angry_program/article/details/104435334/