【Web安全攻防从入门到精通】业务逻辑漏洞
业务逻辑漏洞
逻辑漏洞,是由于代码逻辑是通过人的逻辑去判断的,每个人都有自己的思维,容易产生不同的想法,导致程序编写完以后会随着人的思维逻辑产生不足。
常见的逻辑漏洞
身份认证安全
- 暴力破解
- Cookie&Session
- 加密测试
业务一致性安全
- 手机号篡改
- 邮箱和用户名更改
- 订单ID更改
- 商品编号更改
- 用户ID篡改
业务数据篡改
- 金额数据篡改
- 商品数量篡改
- 最大数限制突破
- 本地JS参数修改
用户输入合规性
- 注入
- XSS
- FUZZ
密码找回漏洞
- 正常访问,不同找回方式,记录
- 分析数据包,定位敏感信息
- 分析找回机制
- 修改数据包验证
验证码突破
- 暴力破解
- 时间、次数突破
- 回显测试
- 绕过测试
业务授权安全
- 未授权访问
- 越权测试
业务流程乱序
- 顺序执行缺陷
业务接口调用
- 恶意注册
- 短信炸弹
- 内容编辑
时效绕过测试
- 时间刷新缺陷
- 时间范围测试
如何挖掘逻辑漏洞
确定业务流程→寻找流程中可以被操控的环节→分析可以被操控环节能够产生的逻辑问题→尝试修改参数触发逻辑问题
逻辑漏洞分类
从越权的角度分析,分为水平越权、垂直越权和交叉越权三类
- 水平越权
水平越权是基于数据访问缺陷的一种常见漏洞。一般是由于服务器在用户访问数据时对用户身份校验不足导致的数据泄露。例如A和B都是某网站的普通用户,一般情况下都只能查看自己的资料,但是A可以通过某些手段(如修改参数)获取B的资料
- 垂直越权
垂直越权是基于URL访问缺陷的一种常见漏洞。操作是以URL请求的形式发往服务器,当服务器对URL发送人的身份校验不足时,就会造成垂直越权。比如,用户A可以提交一个URL请求删除/添加用户,而这其实是管理员才能拥有的权限。
- 交叉越权
就是前两者的综合。如果说水平越权是改变权限ID导致读取其他ID内容,垂直越权是改变权限等级做出高权限操作,那么交叉越权就是即改变权限ID又改变权限等级。
越权的修复
可以将ID设置为长度相同的随机字符串,或者是通过单项陷门函数加密的方式(Base64不是加密,是编码)保护鉴权ID。但是这种方式是最初级的,依然有很多其他方法绕过,比如从API获取用户健全ID列表、参数污染等防御方法。
比较好的修复方法是将用户的请求和用户的Cookie绑定,这样userId只能通过Session来获取,在面对越权时,开发者就不用每次考虑鉴权的问题。