一、概述
由于没有对用户权限进行严格的判断,导致低权限的账号(比如普通用户)可以去完成高级权限账号(比如超级管理员)范围内的操作。
水平越权:A用户和B用户属于同一级别用户,但各自不能操作对方个人信息,A用户如果越权操作B用户个人信息的情况称为水平越权操作
垂直越权:A用户权限高于B用户,B用户越权操作A用户的权限的情况称为垂直越权。
二、实施过程
水平越权:
1.首先打开水平越权漏洞页面,点击提示,可以获取实验所需的用户名和密码
2.使用其中一个登录,查看用户信息
3.这时可以看到url上是往后端发送了一个用户名进行查询
4.然后这里可以改为其他用户名,来获取他们的个人信息,而不需要输入密码
垂直越权:
1.首先打开水平越权漏洞页面,点击提示,可以获取实验所需的用户名和密码
2.输入超级管理员用户,查看相应信息
在这里可以添加用户
3.尝试添加用户,并用burpsuite进行抓包
抓包成功后将post数据包发送到repeater重发器
4.这时如果再次发送数据包的话,将建立一个跟之前一样的用户
可以看到有两个“111”用户
5.这时退出网页中超级用户登录的话,burpsuite发送数据包将失败,但是已经获取的超级用户的数据包
6.然后登录普通用户查看信息,发现只有看信信息的权限
7.这时,再使用burp suite进行抓包,来获取普通用户的cookie值,相当于使用普通用户的身份,来进行超级管理员的操作
将抓取到的超级用户的cookie值更换为普通用户的cookie值
8.发送数据包,刷新网页
发现多出来一个“111”用户,实验成功。
实验过程简单来说就是获取超级管理员的数据包,然后使用普通用户的cookie值还有一个登录的状态来进行垂直越权,当然这在实际操作中有些困难,因为你要抓到超级管理员的一些操作,然年再去重放,是比较难的,但这是在安全漏洞测试中必须要测试的环节,特别是在一些后台系统当中,有各种用户的权限,就可能存在垂直越权的漏洞。
三、防范措施
越权漏洞属于逻辑漏洞,是由于权限校验的逻辑不够严谨导致的。每个应用系统其用户对应的权限是根据其业务划分的,而每个企业的业务又都是不一样的。因此越权漏洞很难通过扫描工具发现出来,往往需要手动进行测试。
1.使用最小权限原则对用户进行赋权;
2.使用严格的权限校验规则;
3.使用后台登录态作为条件进行权限判断,别动不动就瞎用前端传进来的条件;
4.可以从用户的加密认证cookie中获取当前用户id,防止攻击者对其修改或在session、cookie中加入不可预测、不可猜解的user信息。