逻辑漏洞

中心主题:逻辑漏洞


1. 越权

分类

  • 水平越权:同一权限等级用户之间相互越权(修改其他用户数据)
  • 垂直越权:低权限用户越权访问高权限功能

原理

  • 后端未进行严格的权限校验,仅在前台做界面限制
  • 依赖客户端传参判断身份,而非服务器端会话校验
  • 不安全的直接对象引用(Insecure Direct Object Reference)

检测方法

  • 修改 URL/参数中的 ID、订单号、用户ID 等
  • 使用低权限账号尝试访问高权限接口
  • 遍历其他用户的资源 ID

修复建议

  1. 每次请求必须校验当前用户身份与目标资源归属关系
  2. 使用 Session/Token 绑定用户身份
  3. 对所有敏感操作添加服务器端权限判断
  4. 避免直接暴露可预测的 ID(如自增 ID),改用 UUID 或加密 ID
  5. 对输入参数进行严格白名单过滤

2. 数据篡改(参数修改)

常见篡改点

  • 商品编号、ID、购买数量、价格、优惠券
  • 支付方式、订单状态、退款金额
  • 用户类型(儿童、老人、成人、VIP 等)
  • 其他任意可控参数(如 amount、status、role)

用户类型修改

  • 在请求数据包中把“儿童”改为“成人”或“VIP”
  • 利用金额字段修改为 0 或负数
  • 多次修改参数绕过前端校验

原理

服务器信任客户端提交的参数,未做二次校验或业务逻辑验证

修复建议

  • 所有金额、状态、类型字段后端重新计算/校验
  • 关键字段(如价格、权限)从服务器端数据库重新读取
  • 使用业务逻辑层二次验证

3. 登录相关逻辑漏洞

常见类型

  • 客户信息泄露:返回包中包含其他用户手机号、邮箱
  • Response 状态值绕过:修改返回的 success、code 值
  • Session 覆盖:登录时覆盖他人 Session
  • 找回密码流程绕过:跳过验证步骤、Token 固定
  • 验证码绕过:多次请求同一验证码有效、图形验证码识别绕过

检测要点

  • 查看返回包是否包含其他用户敏感信息
  • 修改返回状态码观察业务是否仍执行
  • 使用同一 Token 登录多个账号

修复

  • 返回包严格过滤敏感字段
  • 所有状态判断必须服务端重新校验
  • Session 与 IP/User-Agent 绑定
  • 找回密码流程每步都必须重新验证

4. 业务逻辑漏洞

常见场景

  • 订单 ID:任意订单号修改支付金额
  • 手机号 / 用户 ID:修改收货人信息
  • 商品 ID:购买不存在或下架商品
  • 其他:购物车数量、优惠叠加、退款金额

漏洞根源

  • 业务流程未严格按步骤校验
  • 前端流程可跳过,后端未做完整性检查
  • Token/签名在关键步骤未重新验证

典型案例

  1. 商品购买流程:修改数量 → 绕过库存校验 → 低价购买
  2. 密码修改:先验证旧密码 → 修改为任意新密码(未二次验证)
  3. 支付漏洞:回调地址可控 → 伪造支付成功

5. 未授权访问

常见目标服务(直接访问即可利用)

  • JBoss 未授权访问
  • Jenkins 未授权访问
  • Redis 未授权访问
  • Elasticsearch 未授权访问
  • MemCache 未授权访问
  • MongoDB 未授权访问
  • Zookeeper 未授权访问
  • Docker 未授权访问
  • WebService 测试接口

检测方法:直接访问对应端口或路径(无登录即可操作)


6. 验证安全(Token / 验证码)

Token 类漏洞

  • 爆破:Token 可暴力破解
  • 回显:Token 值直接返回前端
  • 固定:Token 不随用户/时间变化
  • 识别:可通过特征识别他人 Token
  • 绕过:无 Token 仍可访问
  • 重放:同一 Token 多次使用有效

验证码类漏洞

  • 图形验证码可 OCR 识别
  • 短信/邮箱验证码可无限发送
  • 验证码不与用户绑定
  • 验证码有效期过长

修复

  • Token 使用 JWT + 签名 + 短有效期
  • 绑定 IP/User-Agent/Session
  • 验证码必须后端重新验证且一次性使用

7. 回调漏洞

常见形式

  • 回调地址可控(callback 参数)
  • 数据不存在时仍返回敏感信息
  • 支付/登录回调未验证签名
  • 回调后直接执行敏感操作

修复

  • 回调地址必须白名单限制
  • 所有回调必须校验签名和 Token
  • 回调数据与业务状态二次校验

8. 漏洞根源分析

确定业务流程

  • 梳理完整业务链路(从前端到后端每一步)
  • 找出所有可能被跳过的步骤

商品购买 / 支付 / 密码修改流程分析

  1. 前端流程可跳过 → 后端未做完整性校验
  2. 参数可随意修改 → 未从数据库重新取值
  3. Token/签名在关键步骤未重新验证
  4. 回调接口未做身份校验

支付漏洞控制技巧

  • 分析所有支付相关参数
  • 尝试修改金额、状态、回调地址
  • 伪造支付成功回调
  • 多次支付后观察后端处理逻辑

参考链接


使用说明

  • 本 Markdown 已完全按照思维导图结构整理
  • 每个大类包含 原理、检测、修复、案例
  • 可直接保存为 逻辑漏洞.md
  • 如需合并上一个「源码框架漏洞」文件,或继续补充其他思维导图,请告诉我!