逻辑漏洞小结之SRC篇
字数 1577 2025-08-18 11:39:23
逻辑漏洞挖掘与防御指南:SRC实战篇
一、业务逻辑漏洞挖掘
1. 注册环节漏洞
1.1 短信/邮箱轰炸
- 原理:利用请求重放或参数遍历发送大量验证信息
- 测试方法:
- 使用Burp Intruder遍历参数
- 修改手机号格式(加空格、+86、逗号等)
- 请求参数大小写修改或添加额外参数(如&id=1)
- 不同接口测试(登录处防护但找回密码处可能无防护)
1.2 用户任意注册/批量注册
- 检测点:
- 验证机制缺失
- 验证码可重复使用
- 验证码与用户未绑定
1.3 枚举用户名
- 方法:通过注册或登录接口返回信息差异判断用户存在性
1.4 注册处XSS
- 位置:用户名、个人信息等输入框
- 特点:虽然危害小但可组合其他漏洞利用
2. 登录环节漏洞
2.1 验证码安全问题
- 类型:
- 万能验证码(如0000)
- 验证码在返回包中暴露
- 删除验证码或相关cookie可绕过
2.2 密码爆破
- 方法:
- 修改password字段为空值发送
- 使用Burp Intruder进行暴力破解
2.3 认证凭证替换
- 操作:
- 修改返回包中的账号信息
- Cookie仿冒
- 修改数据包登陆其他用户
3. 找回密码漏洞
3.1 重置任意用户密码
- 常见漏洞:
- 验证码与手机/用户未统一验证
- 直接跳过验证步骤
- 返回包中包含敏感信息
4. 支付/充值漏洞
4.1 金额修改
- 方法:
- 直接修改交易金额/数量参数
- 替换支付模块
- 整数溢出(利用int最大值2147483647)
4.2 支付绕过
- 类型:
- 订单替换
- 请求重放
- 单位替换(国际支付场景)
5. 会员系统漏洞
5.1 文件上传
- 攻击向量:
- 上传恶意HTML/XSS
- 恶意文档(XXE漏洞)
- 恶意图片(ImageMagick命令执行)
- 恶意视频(ffmpeg漏洞导致SSRF)
5.2 横向越权
- 方法:
- 参数修改遍历用户信息
- 检查隐藏表单(修改返回包显示隐藏内容)
二、漏洞专项挖掘
1. 验证码问题
- 测试方法:
- 检查返回包是否包含验证码
- 尝试删除验证码字段
- 测试万能验证码
2. 短信轰炸
- 技术点:
- 请求重放
- Cookie修改后重放
- 参数遍历
- 手机号格式变异
3. 水平越权
- 技巧:
- 多接口测试
- 检查网页源代码中的隐藏表单
- 多账号对比分析请求参数
4. 数据泄露
- 检测位置:
- 找回密码返回包
- 订单信息接口
- 用户资料接口
三、支付逻辑深度漏洞
1. 边界值问题
- 案例:购买负数商品导致金额反转
2. 顺序执行缺陷
- 原理:绕过中间步骤(如支付或验证)
3. 金额篡改
- 方法:直接修改传输中的金额参数
4. 支付流程缺陷
- 类型:
- 支付后仍可添加商品到购物车
- 请求重放导致商品重复购买
- 支付成功后的订单替换
5. 高级支付攻击
- 技术:
- 用户替换(用他人余额支付)
- 密钥泄露(反编译获取支付密钥)
- 函数修改(APK反编译篡改)
6. SSL/TLS漏洞
- Heartbleed漏洞:
- OpenSSL缓冲区过度读取
- 可获取敏感信息(如银行密码)
四、防御建议
-
验证机制:
- 验证码与用户绑定
- 限制发送频率
- 服务端严格校验
-
支付安全:
- 金额签名验证
- 订单状态严格管理
- 支付流程完整性检查
-
权限控制:
- 完善的会话管理
- 敏感操作二次验证
- 最小权限原则
-
输入输出:
- 严格输入过滤
- 输出编码
- 敏感信息脱敏
-
传输安全:
- 全流程HTTPS
- 敏感字段加密
- 防重放机制
-
代码安全:
- 避免硬编码密钥
- 关键函数混淆
- 定期安全审计
五、实战技巧
- 组合漏洞利用:如XSS+CSRF组合攻击
- 接口遍历:同一功能不同接口可能有不同防护
- 参数变异:大小写、添加参数、特殊字符等
- 流程分析:绘制正常业务流程,寻找可绕过点
- 数据对比:多账号请求响应对比发现差异
通过系统性地应用这些方法和技巧,可以有效地发现和修复业务逻辑漏洞,提升系统安全性。