pikachu---越权漏洞
概述
如果使用A用户的权限去操作B用户的数据,A的权限小于B的权限,如果能够成功操作,则称之为越权操作。 越权漏洞形成的原因是后台使用了 不合理的权限校验规则导致的。
一般越权漏洞容易出现在权限页面(需要登录的页面)增、删、改、查的的地方,当用户对权限页面内的信息进行这些操作时,后台需要对 对当前用户的权限进行校验,看其是否具备操作的权限,从而给出响应,而如果校验的规则过于简单则容易出现越权漏洞。
因此,在在权限管理中应该遵守:
1.使用最小权限原则对用户进行赋权;
2.使用合理(严格)的权限校验规则;
3.使用后台登录态作为条件进行权限判断,别动不动就瞎用前端传进来的条件;
你可以通过“Over permission”对应的测试栏目,来进一步的了解该漏洞。
水平越权
首先我们先登录一下
我们点击查看个人信息看提交什么内容到后台
我们可以看见我们点击提交的时候是提交一个get请求。
我们分析get请求可以发现相当于我们把当前的用户名提交给后台后台把对应的信息返回回来了。
如果是我们后台不够严谨我们是可以绕过的,比如我们把对应的get请求修改,将Lucy修改为lili
我们可以发现这样我们登录自己账号可以获得lili的个人信息
这就是一个简单的水平越权漏洞
这个时候我们可以看后台代码
简单的分析一下代码
后台根据get请求获取用户名,直接对这个用户名进行查询,然后返回前端。
想要解决这个问题我们需要后台添加一个验证,就是当我们提交用户名给后台,后台需要验证当前用户名与提交用户名是否相同,
如果相同才返回结果给前台。
垂直越权
首先我们用超级管理员登录一下
我们通过使用添加用户的权限抓包看看
我们这个时候退出超级管理员登录
我们可以看bp里面能不能提交添加权限
我们发现这个时候会发生重名向,这是因为后台已经检查到你已经退出当前超级管理员登录
按照这样我们后台也不会成功添加这一次用户
登录超级管理员
这个时候我们可以登录普通管理员
我们可以发现普通管理员只能查看用户信息,不能添加用户。
这个时候我们可以看抓包
我们可以把当前用户的cookie复制
Cookie: PHPSESSID=6degthlaphpgmrfmr7ga9gfa1b
找到超级管理员登录所抓的包发送到Repeate
将对应cookie交换提交
刷新页面我们可以看见刚才请求成功执行
说明存在着一个垂直越权漏洞,我们可以通过普通用户去进行超级管理员的操作。
首先我们看登录后端代码没有什么问题
它会对当前登录进行判断,判断当前用户的权限,进入对应的页面。
看添加用户的后端代码
只是对当前用户是否登录进行判断,没有判断登录用户是否有没有当前请求的权限,这样就构成垂直越权漏洞。
解决也是在这里添加一个判断,判断前端用户是否有当前请求的权限。