记一次简单的src挖掘
字数 1263 2025-08-26 22:11:35
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验证
- 验证码与账户绑定
- 操作日志记录
- 敏感操作二次验证
-
接口安全防护:
- 默认拒绝原则
- 基于角色的访问控制
- 敏感数据最小化返回
- 接口签名验证
-
客户端安全:
- 避免硬编码敏感接口
- 实施适当的混淆保护
- 服务端严格校验请求来源