如果使用A用户的权限去操作B用户的数据,A的权限小于B的权限,如果能够成功操作,则称之为越权操作。 越权漏洞形成的原因是后台使用了 不合理的权限校验规则导致的。
一般越权漏洞容易出现在权限页面(需要登录的页面)增、删、改、查的的地方,当用户对权限页面内的信息进行这些操作时,后台需要对 对当前用户的权限进行校验,看其是否具备操作的权限,从而给出响应,而如果校验的规则过于简单则容易出现越权漏洞。
因此,在在权限管理中应该遵守:
1.使用最小权限原则对用户进行赋权;
2.使用合理(严格)的权限校验规则;
3.使用后台登录态作为条件进行权限判断,别动不动就瞎用前端传进来的条件;
水平越权: A用户和B用户属于同一级别用户,但各自不能操作对方个人信息, A用户如果越权操作B用户的个人信息的情况称为水平越权(平行越权)操作。
垂直越权:A用户权限高于B用户 , B用户越权操作A用户的权限的情况称为垂直越权。
越权漏洞属于逻辑漏洞,是由于权限校验的逻辑不够严谨导致。
每个应用系统其用户对应的权限是根据其业务功能划分的,而每个企业的业务又都是不一样的。
因此越权漏洞很难通过扫描工具发现出来,往往需要通过手动进行测试。
水平越权
右上角有提示,按提示随意登录一个账号
我们依然登录kobe的账号,进去有个查看个人信息,我们查看一下,显示出了kobe的信息。
如果在登录kobe账号的情况下,能够查看到其他人比如lili的信息(他们账号权限一样,但逻辑上不能相互查看对方信息 )这种情况就属于水平越权。
打开burpsuite抓包,点击查看个人信息,我们可以看到此时提交了一个get请求,username是kobe
我们直接把kobe换成lili然后放包。
我们在登录kobe账号的情况下成功的查看了lili的个人信息。
垂直越权
存在两个账号,admin是管理员账号,pikachu是普通用户。
先使用admin账号登录观察一下,发现admin账号拥有查看所有用户和添加用户的权限。
点击添加用户,随意添加一个用户,开启burpsuite抓包看一下,我们发现参数通过post传递,而且在url的头中存在admin的字样。
放包,使用admin管理员添加账户成功。
退出登录我们登录pikachu的账号看一看,pikachu账号只能看到所有用户列表,但是并没有添加删除的权限。
想想admin登录时添加账户信息时使用的url中执行的php
op2_admin_edit.php
192.168.1.157/pikachu-master/vul/overpermission/op2/op2_admin_edit.php
如果在登录pikachu账号的情况下,访问这个地址可以直接添加用户的话,就完成了垂直越权
hi pikachu证明登录的是pikachu账号(也可以抓包对比cookie)直接添加用户chouliumang看看能否成功。
创建后回到登陆界面,登录admin验证。chouliumang被成功添加。