记一次逻辑漏洞挖掘
字数 1102 2025-08-06 08:35:27

逻辑漏洞挖掘实战:预约系统越权漏洞分析

漏洞发现背景

本次漏洞挖掘针对的是一个预约系统,主要目标是寻找越权访问漏洞。越权漏洞通常分为水平越权和垂直越权两种类型,本次发现的主要是水平越权漏洞,即能够访问其他用户的预约信息。

初步测试流程

  1. 常规测试方法

    • 首先输入测试信息进行预约
    • 查看"我的预约"功能获取自己的预约信息
    • 对查看预约信息的请求进行抓包分析
  2. 参数加密发现

    • 请求包中的iduserid参数采用了Base64编码
    • 进一步解码后发现参数实际上经过了二次加密处理
    • 由于加密算法未知,直接解密尝试失败

关键突破点

  1. 删除功能分析

    • 删除预约功能的请求参数未加密
    • 发现id为6位数字格式
    • 通过替换id值可实现越权查看他人信息,但userid固定无法绕过
  2. 修改功能漏洞

    • 预约提交后可进行修改操作
    • 修改请求的包体参数未加密
    • 修改后的提交请求又变为加密参数
    • 响应包会跳转到修改预约信息的界面

漏洞利用方法

  1. 参数篡改测试

    • 修改appid后参数可正常返回
    • 其他参数修改会导致错误
    • appid后数字改为目标id数字
  2. 前端源码分析

    • 跳转后页面源码显示appid加密参数已变为目标id的加密形式
    • 系统自动完成了加密过程
  3. 自动化利用

    • 编写脚本批量遍历id参数
    • 利用系统自动加密机制生成有效请求
    • 成功实现越权查看他人预约信息

技术要点总结

  1. 加密参数处理

    • 系统在不同功能点采用不一致的加密策略
    • 修改功能暴露了加密前的原始参数
    • 系统自动加密机制可被利用来生成有效加密参数
  2. 逻辑缺陷

    • 修改功能作为中间步骤未进行完整权限验证
    • 前端跳转携带了敏感参数且可被篡改
    • 加密机制存在设计缺陷,可通过特定路径绕过

防御建议

  1. 权限验证

    • 所有涉及用户数据的操作都应进行严格的权限检查
    • 前后端均需验证用户与数据的归属关系
  2. 加密策略

    • 统一所有功能的参数加密方式
    • 避免暴露原始ID或使用可预测的加密方式
    • 考虑使用会话相关的动态加密密钥
  3. 业务流程

    • 修改功能应直接使用加密后的参数
    • 避免在跳转过程中携带可篡改的敏感参数
    • 关键操作应采用多因素验证机制
  4. 监控措施

    • 对异常ID访问模式进行监控
    • 记录所有敏感操作的完整日志

漏洞挖掘经验

  1. 全面测试:不局限于单一功能点,需测试所有相关业务流程
  2. 参数分析:关注不同功能间参数处理的差异
  3. 流程跳转:特别注意页面跳转过程中携带的参数
  4. 自动化辅助:合理使用脚本提高测试效率

此案例展示了即使系统采用了加密措施,如果业务流程存在逻辑缺陷,仍然可能导致严重的安全问题。安全设计需要从整体流程考虑,而非单纯依赖加密等单点防护措施。

逻辑漏洞挖掘实战:预约系统越权漏洞分析 漏洞发现背景 本次漏洞挖掘针对的是一个预约系统,主要目标是寻找越权访问漏洞。越权漏洞通常分为水平越权和垂直越权两种类型,本次发现的主要是水平越权漏洞,即能够访问其他用户的预约信息。 初步测试流程 常规测试方法 : 首先输入测试信息进行预约 查看"我的预约"功能获取自己的预约信息 对查看预约信息的请求进行抓包分析 参数加密发现 : 请求包中的 id 和 userid 参数采用了Base64编码 进一步解码后发现参数实际上经过了二次加密处理 由于加密算法未知,直接解密尝试失败 关键突破点 删除功能分析 : 删除预约功能的请求参数未加密 发现 id 为6位数字格式 通过替换 id 值可实现越权查看他人信息,但 userid 固定无法绕过 修改功能漏洞 : 预约提交后可进行修改操作 修改请求的包体参数未加密 修改后的提交请求又变为加密参数 响应包会跳转到修改预约信息的界面 漏洞利用方法 参数篡改测试 : 修改 appid 后参数可正常返回 其他参数修改会导致错误 将 appid 后数字改为目标 id 数字 前端源码分析 : 跳转后页面源码显示 appid 加密参数已变为目标 id 的加密形式 系统自动完成了加密过程 自动化利用 : 编写脚本批量遍历 id 参数 利用系统自动加密机制生成有效请求 成功实现越权查看他人预约信息 技术要点总结 加密参数处理 : 系统在不同功能点采用不一致的加密策略 修改功能暴露了加密前的原始参数 系统自动加密机制可被利用来生成有效加密参数 逻辑缺陷 : 修改功能作为中间步骤未进行完整权限验证 前端跳转携带了敏感参数且可被篡改 加密机制存在设计缺陷,可通过特定路径绕过 防御建议 权限验证 : 所有涉及用户数据的操作都应进行严格的权限检查 前后端均需验证用户与数据的归属关系 加密策略 : 统一所有功能的参数加密方式 避免暴露原始ID或使用可预测的加密方式 考虑使用会话相关的动态加密密钥 业务流程 : 修改功能应直接使用加密后的参数 避免在跳转过程中携带可篡改的敏感参数 关键操作应采用多因素验证机制 监控措施 : 对异常ID访问模式进行监控 记录所有敏感操作的完整日志 漏洞挖掘经验 全面测试 :不局限于单一功能点,需测试所有相关业务流程 参数分析 :关注不同功能间参数处理的差异 流程跳转 :特别注意页面跳转过程中携带的参数 自动化辅助 :合理使用脚本提高测试效率 此案例展示了即使系统采用了加密措施,如果业务流程存在逻辑缺陷,仍然可能导致严重的安全问题。安全设计需要从整体流程考虑,而非单纯依赖加密等单点防护措施。