- 特点:逻辑漏洞指的是一类漏洞,含有多个漏洞
- OWASP TOP 10——是一个国际组织,根据4年中社会上出现频率最多的10个漏洞风险
- 10种风险
- 注入(Injection)
- 失效身份认证? ? ? ? (逻辑漏洞)
- 铭感的数据泄露
- XML外部实体(XXE)
- 失效的访问控制? ? ? ?(逻辑漏洞)
- 错误安全配置
- 跨站脚本(XSS)
- 不安全的反序列化漏洞
- 使用具有已知漏洞的组件
- 日志记录和监视不足
- 业务逻辑漏洞分类
- 绕过验证
- 客户端验证绕过
- 登录验证在前端进行
- 在前端做校验,将校验后的结果用一个字符串表示,将字符串发送给后端,后端根据接收到的数据做判断是否登录
- 利用前端的HTML标签属性对输入的数据做校验
- 绕过
- bp抓包将前端验证后发送给后端的数据进行篡改
- 串改前端的HTML代码
- 客户端信息泄露
- 场景
- 网站的开发过程中,需要对系统进行多次测试。测试的数据被开发者写到了注释里面,且注释的内容在前端展现出来,并且并未删除测试数据
- 绕过
- F12查看网站前端源码找到测试的数据
- 客户端的流程控制
- 分类
- 网站的跳转由前端控制
- 后端判断用户登录,登录后产生一个随机的字符串,然后将这个字符串发送给前端,前端接收到数据后,校验接受的数据。判断是否成功登录,然后完成网页台跳转。
- 网站的某些功能,需要连续性的验证,但是并没有对验证流程做控制,从而可以绕过前面的一些流程直接完成验证后的操作
- 客户端控制页面的跳转
- 绕过
- 找前端的代码,并做分析
- 注册账号测试流程,测试流程之间是否严格控制
- 分析前端对登录的判断,并且根据分析后的结果采用bp抓包,更改响应报文中的数据,改成正确的正确登录后的数据。
- 操作目标篡改
- 原理
- 如果某操作采用了连续身份校验机制或身份校验过程与操作过程分离,可以尝试在身份验证过程中替换身份校验对象或操作对象实现绕过验证
- 绕过
- 通过修改验证过程中的验证信息达到绕过的目的
- 参数篡改
- 原理
- 在登录过程中需要添加验证码,但验证码的安全性不高的情况下可能会被绕过。
- 验证码在前端生成,随着请求包一起将验证码发送到后端做校验
- 生成了验证码,验证码传输到后端后并没有对验证码做校验
- 绕过
- 如果报文中出现了2个字段,且值都是一样的,可以选择将两个字段的值改为相同,然后观察页面响应,验证码是否报错
- Bp抓包删除验证码字段,然后发现页面响应的验证码没报错,说明漏洞存在
- 暴力破解
- 原理
- ???????核心是试一试,采用枚举的方式对此提交可能存在的值,从而得出正确的数据。
- 字典构造
- 系统的默认用户名与密码
- 用户的个人习惯——大量的收集个人信息
- 随机生成字符串
- 特点
- 效率很低
- 取决于网络的高低
- 取决于设备
- 取决于算法
- 取决于字典
- 提高效率
- 优化算法
- 优化字典
- 提高设备的性能
- 配合其他漏洞,如详细的报错信息
- 如何测试
- 观测需要暴力破解的地方是否存在有效的验证码,暴力破解测试的是服务器有没有对错误登录的操作做限制
- 防御
- 对错误登录的次数做限制
- 设置错误登录的次数,超过次数就封IP
- 设置单位时间内登录的次数
- 添加有效的验证码
- 防御方式
- 所有验证在服务端进行,验证问题的答案不能以任何形式返回客户端中(如图片验证码答案、短信验证码、验证问题答案等)。
- 验证结果及下一步跳转操作由服务端直接进行
- 应尽可能避免采用连续身份验证机制,无论采用何种验证机制,只有当所有的数据输入以后,才进行身份验证数据的验证。
- 越权
- 分类
- 水平越权——同等级的用户之间的越权
- 垂直越权——低等级的用户,通过一定的操作,完成高权限的操作
- 权限的表示
- 用户ID——如果ID出现在URL上,攻击者就可以任意的访问每个用户的数据
- 角色值——如果在cookie中出现有关角色的字段,后端利用该角色划分用户的功能
- 根据文件名——如学生成绩管理系统,学生登录跳转到student.php,老师登录跳转到teacher.php
- 绕过
- 观察权限的划分方式
- 根据权限的划分方式做对应的修改
- 防御
- 采用成熟的权限管理框架,如spring security。
- 用户进行访问操作的凭证(如用户ID、产品号码、订单流水号等)优先采用在服务端关联session或加密后放在session中的方法获取。
- 必须采用表单或其他参数提交用户进行访问操作的凭证(如用户ID、产品号码、订单流水号等)时,应尽可能采用难以猜测的构造方式(增加字母及随机数字等)或采用复杂的加密算法加密后提交,应对客户端提交的凭证与会话的权限进行严格的验证,如提交的产品号码是否为隶属于登录用户的产品号码。
- 对管理功能模块进行严格的权限验证,如非必要建议不对互联网开放或进行网络层的访问控制。
- 交易活动类
- 原理
- 在交易过程中,交易的金额能够被篡改,且并被未验证交易成功的金额
- 测试
- 找交易的单价、数量、总金额,并篡改
- 防御
- 金额、单价、数量严格校验
- 单价、金额、数量不能直接在请求报文中展示
- 单价、金额、数量由后端控制
- 如果调用了第三方支付平台,需要验证收费的具体金额。
- 其他漏洞
- 重放攻击——多次重复提交同一个请求包
- 资源滥用
- 短信验证码
- 获取验证码的请求报文,然后多次提交,如果提交的线程较高就会影响需要使用验证码的通用
- 短信轰炸
- 通过修改获取验证码的手机号码,与信息多次提交后就有可能对某个用户产生影响
- 测试方法
- 场景分析——熟悉网站的功能与参数的作用
- 风险分析——分析各种场景不存在的风险
- 验证漏洞——验证风险分析的结果
- 漏洞记录——将验证的结果进行记录
|