记一次简单的src挖掘
字数 1263 2025-08-26 22:11:35

SRC挖掘实战:从密码重置到未授权访问漏洞挖掘

漏洞挖掘过程详解

1. 初始发现:密码重置漏洞

测试起点:登录框开始测试,弱口令尝试无果后转向密码找回功能

关键测试步骤

  1. 输入非法参数测试找回密码功能
  2. 抓包观察响应代码(返回0表示未查询到账户)
  3. 响应篡改:修改响应包将0改为1,成功绕过前端验证
  4. 前端自动请求验证码接口,验证码直接返回在响应体中
  5. 密码重置请求参数分析:
    • 请求体仅包含userIdspassword
    • 修改userIds为1尝试重置管理员密码
    • 响应为1表示重置成功

漏洞本质:未验证用户身份和权限的密码重置功能,导致任意账户密码重置

2. 移动端接口未授权访问

发现路径

  1. 通过APP下载二维码获取APK文件
  2. 扫描APK发现异常接口地址
  3. 直接访问接口返回所有用户的uid和电话号码

漏洞特征

  • 接口未实施任何身份验证
  • 返回敏感用户信息(UID、手机号)
  • 通过此接口最终定位到管理员账户

漏洞利用链构建

  1. 信息收集阶段

    • 通过未授权接口获取所有用户信息
    • 识别管理员账户UID
  2. 漏洞利用阶段

    • 使用密码重置漏洞修改目标账户密码
    • 结合收集的信息精准定位高权限账户
  3. 验证阶段

    • 使用新密码成功登录验证漏洞有效性
    • 选择普通账户进行验证,避免业务影响

关键漏洞原理分析

密码重置漏洞

根本原因

  • 服务端未验证请求的合法性
  • 仅依赖前端传递的userIds参数
  • 无二次验证机制(如Token、短信验证码绑定)

修复建议

  1. 实施完整的身份验证流程
  2. 验证短信验证码与账户的绑定关系
  3. 使用一次性Token机制
  4. 记录密码重置操作日志

未授权访问漏洞

根本原因

  • 接口缺乏权限控制
  • 敏感数据直接返回
  • 接口地址暴露在客户端中

修复建议

  1. 实施严格的接口权限控制
  2. 敏感信息脱敏处理
  3. 使用签名验证机制
  4. 避免将敏感接口暴露在客户端代码中

漏洞挖掘方法论总结

  1. 功能点测试顺序

    • 优先测试身份验证相关功能(登录、注册、密码找回)
    • 关注业务流程中的权限校验缺失
  2. 响应篡改技巧

    • 观察业务逻辑依赖的响应码
    • 尝试修改响应内容绕过前端限制
  3. 客户端资源分析

    • APK/Web静态分析寻找隐藏接口
    • 关注非常规的API路径
  4. 信息关联利用

    • 将不同漏洞点的信息串联利用
    • 避免单一漏洞视角,构建攻击链

实战技巧提炼

  1. 密码重置漏洞挖掘要点

    • 测试各步骤的请求/响应是否可篡改
    • 检查验证码是否可预测或直接返回
    • 分析参数是否可枚举或操纵
  2. 未授权访问检测方法

    • 客户端逆向寻找API端点
    • 直接访问疑似接口测试权限控制
    • 关注返回数据的敏感程度
  3. 权限提升思路

    • 不要假设UID 1一定是管理员
    • 通过信息泄露接口确认权限体系
    • 结合业务逻辑判断权限分配规则

防御体系建议

  1. 密码重置功能安全设计

    • 全流程Token验证
    • 验证码与账户绑定
    • 操作日志记录
    • 敏感操作二次验证
  2. 接口安全防护

    • 默认拒绝原则
    • 基于角色的访问控制
    • 敏感数据最小化返回
    • 接口签名验证
  3. 客户端安全

    • 避免硬编码敏感接口
    • 实施适当的混淆保护
    • 服务端严格校验请求来源
SRC挖掘实战:从密码重置到未授权访问漏洞挖掘 漏洞挖掘过程详解 1. 初始发现:密码重置漏洞 测试起点 :登录框开始测试,弱口令尝试无果后转向密码找回功能 关键测试步骤 : 输入非法参数测试找回密码功能 抓包观察响应代码(返回0表示未查询到账户) 响应篡改 :修改响应包将0改为1,成功绕过前端验证 前端自动请求验证码接口,验证码直接返回在响应体中 密码重置请求参数分析: 请求体仅包含 userIds 和 password 修改 userIds 为1尝试重置管理员密码 响应为1表示重置成功 漏洞本质 :未验证用户身份和权限的密码重置功能,导致任意账户密码重置 2. 移动端接口未授权访问 发现路径 : 通过APP下载二维码获取APK文件 扫描APK发现异常接口地址 直接访问接口返回所有用户的uid和电话号码 漏洞特征 : 接口未实施任何身份验证 返回敏感用户信息(UID、手机号) 通过此接口最终定位到管理员账户 漏洞利用链构建 信息收集阶段 : 通过未授权接口获取所有用户信息 识别管理员账户UID 漏洞利用阶段 : 使用密码重置漏洞修改目标账户密码 结合收集的信息精准定位高权限账户 验证阶段 : 使用新密码成功登录验证漏洞有效性 选择普通账户进行验证,避免业务影响 关键漏洞原理分析 密码重置漏洞 根本原因 : 服务端未验证请求的合法性 仅依赖前端传递的userIds参数 无二次验证机制(如Token、短信验证码绑定) 修复建议 : 实施完整的身份验证流程 验证短信验证码与账户的绑定关系 使用一次性Token机制 记录密码重置操作日志 未授权访问漏洞 根本原因 : 接口缺乏权限控制 敏感数据直接返回 接口地址暴露在客户端中 修复建议 : 实施严格的接口权限控制 敏感信息脱敏处理 使用签名验证机制 避免将敏感接口暴露在客户端代码中 漏洞挖掘方法论总结 功能点测试顺序 : 优先测试身份验证相关功能(登录、注册、密码找回) 关注业务流程中的权限校验缺失 响应篡改技巧 : 观察业务逻辑依赖的响应码 尝试修改响应内容绕过前端限制 客户端资源分析 : APK/Web静态分析寻找隐藏接口 关注非常规的API路径 信息关联利用 : 将不同漏洞点的信息串联利用 避免单一漏洞视角,构建攻击链 实战技巧提炼 密码重置漏洞挖掘要点 : 测试各步骤的请求/响应是否可篡改 检查验证码是否可预测或直接返回 分析参数是否可枚举或操纵 未授权访问检测方法 : 客户端逆向寻找API端点 直接访问疑似接口测试权限控制 关注返回数据的敏感程度 权限提升思路 : 不要假设UID 1一定是管理员 通过信息泄露接口确认权限体系 结合业务逻辑判断权限分配规则 防御体系建议 密码重置功能安全设计 : 全流程Token验证 验证码与账户绑定 操作日志记录 敏感操作二次验证 接口安全防护 : 默认拒绝原则 基于角色的访问控制 敏感数据最小化返回 接口签名验证 客户端安全 : 避免硬编码敏感接口 实施适当的混淆保护 服务端严格校验请求来源