Pikachu对Over Permission的解释:
如果使用A用户的权限去操作B用户的数据,A的权限小于B的权限,如果能够成功操作,则称之为越权操作。 越权漏洞形成的原因是后台使用了 不合理的权限校验规则导致的。
一般越权漏洞容易出现在权限页面(需要登录的页面)增、删、改、查的的地方,当用户对权限页面内的信息进行这些操作时,后台需要对 对当前用户的权限进行校验,看其是否具备操作的权限,从而给出响应,而如果校验的规则过于简单则容易出现越权漏洞。
因此,在在权限管理中应该遵守:
1.使用最小权限原则对用户进行赋权;
2.使用合理(严格)的权限校验规则;
3.使用后台登录态作为条件进行权限判断,别动不动就瞎用前端传进来的条件;
我的理解:我登录我的账号,却能对你的账号进行操作,这就是越权,我权限比你低,你权限比我高,我依然能做你这种权限的操作,叫垂直越权。如果我们两个权限一样,我却对你的账号进行了操作,那就是水平越权。属于逻辑漏洞
- 水平越权:
成功,结果如图:
明明我登陆的是lucy,却可以查看lili的信息,这就是水平越权,大部分越权漏洞都有hidden的功劳。
- 垂直越权:
这一关的操作点应该是添加用户,先用admin添加一个普通用户,然后用pikachu普通用户垂直越权也添加用户
先添加一个cs用户,并且同时抓包
然后退出登录,并登录pikachu且刷新抓包拿cookie
只能查看
复制pikachu的cookie,并粘贴到刚刚admin添加用户的包去,这样就相当于是用pikachu来添加用户,成功就代表垂直越权。
放包看结果
成功了,使用pikachu用户,做了admin的操作,这就是垂直越权
其实这关有点问题的,我想垂直越权,必须要有管理员的包,但是我都能搞到管理员的包了,我直接用它操作啊,何必多此一举再去用pikachu操作呢。
修复建议:
- 只要不用hidden把用户标识放在前端,那么就可以防止水平越权,
- 只要不被抓到管理员的包,那么至少在这关是无法实现垂直越权的
- 校验要严格,任何敏感操作都应该多重验证加token