巧妙绕过校验平行越权获取敏感信息思路分享
字数 1164 2025-08-29 08:30:25
巧妙绕过校验实现平行越权获取敏感信息的技术分析
1. 案例背景
本次测试对象为某游戏APP,测试位置为个人信息数据包接口。目标是通过技术手段绕过系统校验,实现平行越权访问其他用户的敏感信息。
2. 初始分析
2.1 请求参数观察
- 原始请求包含多个参数:sign、sdk、time、code等
- 请求地址格式:
getxxxxxinfobyid - 初始尝试:直接修改id值重发请求,结果签名校验失败
2.2 数据返回特点
- 常规返回的个人信息中,身份证、姓名等敏感字段被脱敏处理
3. 绕过签名校验的技术突破
3.1 常规尝试失败
- 删除签名参数:无效
- 修改时间参数:无效
- 这些方法都无法绕过签名校验机制
3.2 关键突破点
-
请求体简化测试:
- 将整个请求体删除后重发,系统提示"缺少userid"
-
最小参数测试:
- 仅保留userid一个参数重新发送请求
- 修改userid值为其他用户ID
- 成功绕过校验,实现平行越权访问
3.3 技术原理分析
- 签名校验可能依赖于"sdk"参数的存在
- 当请求体只有一个参数(userid)时,系统可能走了不同的校验路径
- 这种设计缺陷导致当缺少sdk参数时,签名校验被绕过
4. 获取完整敏感信息的进阶技术
4.1 接口路径修改测试
- 原始接口路径:
getxxxxxinfobyid - 尝试删除"xxxx"修饰词,构造新路径:
getinfobyid
4.2 测试结果
- 使用简化后的路径发送请求
- 成功返回未脱敏的明文敏感数据
4.3 技术原理分析
- 系统可能为不同路径设置了不同的数据返回策略
- 完整路径可能关联了数据脱敏处理逻辑
- 简化路径可能调用了底层未受保护的数据接口
5. 完整攻击流程总结
- 发现个人信息查询接口
- 观察常规请求参数和响应格式
- 简化请求体至仅含userid参数,绕过签名校验
- 修改userid实现平行越权访问
- 简化接口路径获取未脱敏敏感数据
6. 防御建议
6.1 针对签名校验绕过
- 对所有请求实施统一严格的签名验证
- 无论参数多少都应进行完整校验
- 避免因参数数量不同而走不同校验路径
6.2 针对接口路径问题
- 实施严格的接口访问控制
- 所有数据接口都应进行相同级别的敏感数据处理
- 避免因路径不同而返回不同级别的数据
6.3 通用安全建议
- 实施最小权限原则
- 对所有数据访问进行权限验证
- 敏感数据应统一进行脱敏处理
- 避免在客户端进行敏感数据处理
- 定期进行安全审计和渗透测试
7. 技术启示
本案例展示了安全防御中的几个关键问题:
- 防御不一致性:不同参数组合导致不同的安全校验路径
- 接口暴露过度:同一数据通过不同路径可获取不同级别的信息
- 客户端依赖:敏感数据处理不应依赖客户端或路径参数
这种类型的漏洞在开发中容易被忽视,需要开发者从系统整体安全架构角度进行设计,而非仅关注表面安全措施。