什么是水平越权,什么是垂直越权
水平越权:通过更换的某个ID之类的身份标识,从而使A账号获取(修改、删除等)B账号数据。使用低权限身份的账号,发送高权限账号才能有的请求,获得其高权限的操作。
垂直越权:通过删除请求中的认证信息后重放该请求,依旧可以访问或者完成操作。
原理,检测,利用
原理:
前端安全造成:界面,判断用户等级后,代码界面部分进行可选显示,这种判断是不安全的
后端安全造成:数据库
在数据库中的表可能存在以下情况
user表
id,username,password,usertypr
1,admin,123456,1
2,xiaodi,11111,2
登录用户admin或者xiaodi时,代码是通usertype来进行判断的
如果在访问数据包中有传输用户的编早、用户组编号或类型编号的时候,那么尝试对这个值进行修改,就是测试越权漏洞的基本。
防御方案
1.前后端同时对用户输入信息进行校验,双重验证机制
2.调用功能前验证用户是否有权限调用相关功能
3.执行关键操作前必须验证用户身份,验证用户是否具备操作数据的权限
4.直接对象引用的加密资源ID,防止攻击者枚举ID,敏感数据特殊化处理5.永远不要相信来自用户的输入,对于可控参数进行严格的检查与过滤
演示案例:
Pikachu-本地水平垂直越权演示(漏洞成因)
墨者水平-身份认证失效漏洞实战(漏洞成因)
越权检测-小米范越权漏洞检测工具(工具使用)
越权检测-Burpsuite插件Authz安装测试(插件使用)
涉及资源:
https://github.com/ztosec/secscan-authcheck
http://pan.baidu.com/s/1pLjaQKF (privilegechecker)