WEB漏洞-逻辑越权之水平垂直越权
解释
如果使用A用户的权限去操作B用户的数据,A的权限小于B的权限,如果能够成功操作,则称之为越权操作。越权漏洞形成的原因是后台使用了 不合理的权限校验规则导致的。
一般越权漏洞容易出现在权限页面(需要登录的页面)增、删、改、查的的地方,当用户对权限页面内的信息进行这些操作时,后台需要对对当前用户的权限进行校验,看其是否具备操作的权限,从而给出响应,而如果校验的规则过于简单则容易出现越权漏洞。
因此,在在权限管理中应该遵守:
1.使用最小权限原则对用户进行赋权;
2.使用合理(严格)的权限校验规则;
3.使用后台登录态作为条件进行权限判断,别动不动就瞎用前端传进来的条件;

通过更换的某个ID之类的身份标识,从而使A账号获取(修改、删除等)B账号数据。
使用低权限身份的账号,发送高权限账号才能有的请求,获得其高权限的操作。
通过删除请求中的认证信息后重放该请求,依旧可以访问或者完成操作。
演示案例
pikachu靶场
水平越权
(账号kobe密码123456)


点击查看个人信息抓包

把kobe改为lucy

lucy和kobe是同一级别通过修改数据包可以查看到其他用户这就是水平越权
通过用户注册可以获取到已经注册的用户名从而实行水平越权
垂直越权
管理员密码(admin 123456)


点击添加用户

填写完成后点击创建并抓包

把数据包发送到重发器然后丢弃
返回pikachu登录一个普通用户
user:pikachu passwd:000000

这里没有添加用户权限
打开浏览器的抓包获取cookie

将此cookie替换到前面保存的数据包中

发送数据包

通过普通用户使用了管理员的权限这就是垂直越权
前提条件:获取添加用户的数据包
怎么来的数据包
1.普通用户前端又操作界面可以抓取数据包
2.通过网站源码本地搭建自己去模拟抓取
3.盲猜
原理
前端安全造成:界面
判断用户等级后,代码界面部分进行可选显示
后端安全造成:数据库
user表(管理员和普通用户同表)
id,username,password,usertype
1,admin,123456,1
2,liuyifei,11111,2
登录用户是通过usertype进行判断
如果在访问数据包中有传输用户的编号、用户组编号或类型编号的时候,那么尝试对这个值进行修改,就是测试越权漏洞的基本
越权检测工具
secscan-authcheck
https://github.com/ztosec/secscan-authcheck
privilegechecker
http://pan.baidu.com/s/1pLjaQKF
burp插件Authz
在burp商店进行安装


修复防御方案
1.前后端同时对用户输入信息进行校验,双重验证机制
2.调用功能前验证用户是否有权限调用相关功能
3.执行关键操作前必须验证用户身份,验证用户是否具备操作数据的权限
4.直接对象引用的加密资源ID,防止攻击者枚举ID,敏感数据特殊化处理
5.永远不要相信来自用户的输入,对于可控参数进行严格的检查与过滤