- 实现业务功能的逻辑不严谨导致的漏洞
-
业务流程分类
- 用户身份验证
- 会话管理
- 角色和权限识别
- 资源访问
- 交易和支付
- 密码重置和安全设置
- 日志记录和审计
- url参数
- 某些参数可以表示用户权限(身份)
- http请求头
- 用户身份验证信息存在请求头部中的 Authorization字段中
- http请求正文
- Cookies
- 数据库记录
- 服务器端会话状态
- 客户端状态
- 日志文件
- 后端应用程序代码
- 前端应用程序代码
-
逻辑漏洞危害性标准
- 数据泄露和隐私问题
- 数据保护措施不到位导致的用户数据的泄露
- 未授权访问
- A能看到B、C等用户的一些信息;如订单信息等
- 金融损失
- 合规性问题
- 数据保护问题可能会导致公司被起诉;安全性法规
- 业务中断
- 业务功能中断;无法访问该业务功能;用户可能流失
- 拒绝服务
- 服务器宕机;无法访问
- 恶意行为和欺诈
- 公司损失,名誉受损
- 声誉损失
- 长期存在和影响
- 长期不安全因素的存在会导致用户的流失
- 难以检测
- 逻辑漏洞的产生没有具体的标准,因此难以检测
- 数据泄露和隐私问题
-
漏洞挖掘思路
- 边界条件测试
- 购物车数量使用负数或超过最大值进行测试;看是否有数量检测漏洞
- 交叉验证
- 删除帖子后快速恢复帖子,查看帖子状态是否有改变
- 颠倒顺序
- 对于选择有先后顺序要求的,如订票先选定日期后选定座位
- 重复操作
- 重复投票
- 越权操作
- 通过低权限账号实现了高权限账号的操作
- 如医生账号可以看患者病历,登入患者账号可以尝试查看其他患者病历,如果可以则存在越权漏洞
- 并发操作
- 多用户购买同一商品(超出库存),查看是否会因为库存不一致导致出错
- 审查业务逻辑代码
- 代码审计的内容,通过代码查看逻辑;
- 如在线投票程序;投票结束了依然能够投票
- 边界条件测试
-
身份验证问题
-
验证码
- 类型
-
图片验证码
- 滑动验证码、普通图片验证码、数字算法验证码等
- 随机性
- 字符、颜色、字体、位置等随机
- 失真或噪音
- 一堆污点或斜线,导致无法轻易识别中间的验证码
- 时间限制
- 验证码有输入时间限制
- 可绕过的情况
- 图像验证码不刷新或无效
- session验证,保证session或cookie不变就行
- 验证码复用
- session验证,保证session或cookie不变就行
- 存在无验证界面
- 万能验证码
- 0000 6666 9999 等用于测试的验证码
- 验证码数量有限
- 将有限的图片保存生成字典进行爆破
- 简单验证码识别
- 图像验证码不刷新或无效
-
短信验证码
- 通过手机号进行验证
- 绕过方法
- 短信验证码生命期限内可暴力枚举
- 一些短信验证码有五分钟或十分钟的时间有效期
- 短信验证码在数据包中返回
- 可能出现验证码存在数据包中的情况(虽然感觉不合理)
- 修改请求数据包参数或 Cookie 值绕过
- 某些参数可能可以规避短信验证码验证
- 修改返回包绕过
- 针对前端验证,通过修改返回包的状态码进行绕过
- 攻破短信验证码接口
- 找到对应网站使用的短信验证码接收平台,攻破该平台也能进行登录
- 默认万能验证码
- 0000 9999等
- 验证码无校验
- 短信验证码生命期限内可暴力枚举
-
-
场景
- 登录注册重置密码
- 活动秒杀
- 点赞发帖
- 数据保护
- 支付
- 修改重要账户信息
- 评论私信留言
- 漏洞修复方案
- 增加复杂性
- 添加噪音或失真
- 动态验证码
- 图像反扭曲
- 多因素身份验证
- 定期更新设计
- 类型
-
身份验证
- 利用场景
- 用户登录
- 多因素身份验证
- 社交媒体登录
- 密码重置
- API身份认证
- SSO单一登录
- 电子商务支付
- 云服务和存储
- 绕过手段
- 暴力破解(用户名、密码)
- cookie和session验证
- 利用插件修改cookie中的某个参数冒仿他人登录
- 弱加密
- token固定或者为用户名的编码,可以猜到的
- 防御手段
- 多因素认证
- 密码策略
- 防止暴力破解
- 单点登录
- 安全问题和答案
- 弱密码检测
- 利用场景
-
密码找回
- 测试流程
- 点击正常的密码找回,尝试各种找回条件,记录所有数据包
- 分析数据包,找到敏感的参数或者数据信息
- 分析后台找回机制采用的验证手段
- 修改数据包验证推测
- 绕过手段
- 验证码暴力破解
- 验证码直接返回
- 跳过验证步骤
- 利用邮箱、手机号进行绑定
- 第三方登录绑定其他用户
- 无验证手机号是否为绑定手机号
- 本地验证绕过
- 重置密码最后一步uid或者username可控
- 个人中心修改密码逻辑错误
- 利用session重新绑定用户
- 去掉验证参数绕过验证
- 任意输入验证码修改用户密码
- 防御手段
- 验证码防御
- 多重验证手段验证:绑定手机号、用户名、邮箱等
- 只提供修改密码的界面,不提供其他任何可操作参数
- 测试流程
-
用户输入合规性
- 用户的输入要符合系统的标准、规则、约束;以确保功能正常的运行
- 利用场景(所有输入的地方)
- 表单验证
- 支付信息
- 身份验证
- 数据过滤
- 搜索引擎查询
- 评论和反馈
- 电话号码验证
- 电子邮件验证
- 利用手段
- 注入测试
- xss测试
- 数据极端性测试
- 超长字符串测试
- 特殊符号
- 整数溢出
-
业务逻辑之身份认证
于 2024-04-08 08:17:26 首次发布