web基础漏洞-逻辑漏洞
1、介绍
逻辑漏洞是由于业务代码的逻辑缺失或者错误,导致的漏洞。
2、场景
2.1 明文或不安全的加密
- 请求验证码时直接返回
- 固定的账号密码在前端可看
2.2 可爆破可猜解
- 弱账号密码
- 验证码
- 登录凭证cookie或token,以及访问口令
- 优惠券id,图片id,博客id等
- 找回密码的问答
2.3 步骤可跳过
(1)某功能分为多个页面/接口,可以直接请求后面的页面/接口
(2)某功能基于唯一页面/接口,由参数控制步骤,比如step参数,也可能由多个参数控制
简单的,可以直接burp拦截请求,进行篡改;对于复杂的过程,可以burp拦截响应,进行篡改,然后自动进行。
2.4 未检查数据的范围,或者未检查数据之间的关系
数据范围
- 未验证用户昵称、备注、博客、上传文件名称、聊天室发言或弹窗,导致出现不合规的言论
- 未有效检查字段的字符组成,导致出现敏感字符,为xss、sql注入等提供支持
- 支付场景,未检查数据是否过大或过小,甚至为负数
- 限时场景,未检查当前时间时间
- 限定人数场景,比如报名场景、聊天室,未检查实际人数
数据关系
- 典型的就是越权
- 支付场景,支出或收入前后,商品实际单价与提交的单价
- 登录场景中,获取的手机号与验证码,提交的手机号与验证码
2.5 可竞争
也称为并发测试,由于对数据库、文件等资源的多线程处理,未设置锁而导致并发问题。
测试时,可以是手工频繁请求造成多线程。但更准确的是由代码开多线程请求,对响应结果分析是否出现并发问题。
2.6 可重放
比如优惠券的使用,订单的取消退款,积分的兑换等
2.7 业务逻辑
比如可以领取多张限制的优惠券、优惠券叠加使用,退款包括优惠券金额等等
3、测试发现
(1)直接篡改请求
(2)篡改响应
(3)重放请求
(4)脚本测试竞争