业务视角下的金融SRC快速挖掘思路
字数 2992 2025-12-24 12:07:55
金融SRC漏洞挖掘实战教学文档
1. 注册开户场景漏洞挖掘
1.1 绕过信息校验开户
漏洞原理:前端进行格式校验但后端未严格验证必填字段
- 手机号、邮箱、身份证号等字段仅在前端进行正则格式校验
- 后端处理逻辑:只处理传入的字段,不强制要求所有字段都必须存在
- 可选填字段(如推荐码)的存在导致验证逻辑不完整
攻击方法:
- 拦截开户请求数据包
- 移除手机号相关字段(如mobile、phone等参数)
- 重放请求,观察是否成功开户
检测要点:
- 检查请求参数中是否存在非必填字段
- 尝试删除必填字段观察后端响应
- 验证后端是否真正进行了完整的字段校验
1.2 KYC信息复用伪造
漏洞原理:已认证资料可重复用于注册新账户
- 系统对证件信息进行统一化处理、SDK加签后存储
- 后端为节省资源,优先查询缓存数据库结果
- 同一套认证资料可被多个账户重复使用
攻击流程:
- 正常上传身份证正反面、人脸信息
- 获取返回的加密filekey
- 使用相同资料尝试注册第二个账户
- 观察系统是否检测到资料重复使用
关键API接口特征:
POST /api/upload/identity
Content-Type: multipart/form-data
响应包含:{"filekey": "encrypted_filename"}
1.3 申请状态查询越权
漏洞原理:查询接口缺乏权限控制
- 申请状态查询接口使用可预测的参数(id、orderNo、ticketId、userId)
- 未验证当前用户是否有权查询指定资源
攻击方法:
- 找到状态查询接口(如"/api/application/status")
- 修改request_id、order_no等参数
- 重放请求获取其他用户敏感信息
- 使用自动化脚本遍历可预测ID
敏感信息提取:
- 手机号码、身份证号、银行卡信息
- 用户个人信息、账户余额等
2. 支付场景漏洞挖掘
2.1 高并发下单/提现
漏洞原理:缺乏分布式锁导致重复操作
- 后端未对关键操作加锁控制
- 高并发请求可绕过业务限制
攻击步骤:
- 使用Burp Suite快速提交多次请求(1秒内多次请求)
- 观察是否创建多笔相同订单
- 验证资金是否被重复扣除或增加
检测工具配置:
- Burp Intruder:Turbo模式,高并发请求
- 自定义脚本:模拟多线程并发操作
2.2 负值反冲
漏洞原理:金额参数可为负值
- 支付/退款接口未校验金额必须为正数
- 传入负值导致账户余额异常增加
攻击方法:
POST /api/transfer
{"amount": -1000, "to_account": "xxx"}
- 修改amount为负值
- 观察账户余额变化
关键校验点:
- 金额参数是否允许为负数
- 后端是否有正数校验逻辑
2.3 int64金额溢出
漏洞原理:大数值计算导致整数溢出
- 金融计算涉及金额×精度(×10000或×100000)
- int64最大范围:9.22×10¹⁸
- 超大数值乘倍率后溢出变成负数或小数值
漏洞代码示例:
repayAmount := precision.ConvertAmountByBase(
bo.RepayAmount.String(),
eaBo.MoneyMultiBase, // 可能为100000
)
攻击载荷:
- 传入极大数值:9999999999999999999
- 观察计算后金额是否变为异常值
2.4 篡改参数免手续费
漏洞原理:手续费计算参数可被篡改
- 转账涉及多个计算参数(渠道、汇率、活动ID等)
- 特定参数组合可绕过手续费计算
攻击方法:
- 分析转账接口参数结构
- 尝试修改campaign_id、fee_waived_amount等参数
- 特别关注值为0的参数情况
关键代码逻辑:
if remittanceTicketReq.GetFeeWaivedAmount() != 0 {
if remittanceTicketReq.GetCampaignId() == "" {
return common.ErrWalletInvalidRequestParam
}
}
3. 优惠券场景漏洞挖掘
3.1 优惠券码爆破
漏洞原理:优惠券码可预测且无限次尝试
- 券码未采用加密或随机化生成
- 缺乏网关限流保护
攻击方法:
- 收集优惠券码模式(长度、字符集)
- 使用Intruder进行高并发遍历
- 根据响应差异判断券码有效性
响应差异分析:
- 存在券码:响应长度820/819字节
- 不存在券码:响应长度798字节
3.2 优惠券无锁重复领取
漏洞原理:并发环境下缺乏锁机制
安全代码示例(加锁):
func applyCouponWithLock(amount float64) float64 {
coupon.mu.Lock()
defer coupon.mu.Unlock()
discounted := amount - coupon.Discount
coupon.UsageCount++
return discounted
}
漏洞代码示例(无锁):
func applyCoupon(amount float64) float64 {
discounted := amount - coupon.Discount
atomic.AddInt64(&coupon.UsageCount, 1)
return discounted
}
攻击验证:高并发请求优惠券领取接口
3.3 优惠券叠加使用
漏洞原理:互斥优惠券可同时使用
- 系统未校验优惠券之间的互斥关系
- 单笔订单可使用多张本应限用的优惠券
测试步骤:
- 获取多张优惠券
- 单次交易中尝试同时使用
- 观察折扣是否叠加计算
4. 信息查询场景漏洞挖掘
4.1 越权查询敏感信息
漏洞原理:权限校验不完善
简单越权:
- 直接修改order_id、user_id等参数
- 水平越权访问他人数据
复杂越权:
- 接口支持多种参数查询方式
- 正常使用token中的uid,但支持post传入userid覆盖
Fuzz测试方法:
- 收集历史返回包中的参数名(userphone、uid、role等)
- 组成字典进行参数fuzz
- 发现隐藏的查询参数
4.2 Toc&ToB网关配置错误
漏洞原理:gRPC+Gateway架构权限配置错误
攻击流程:
- 导出管理端(a.com)的Burp历史记录
- 使用脚本处理为CSV格式
- 在用户端(b.com)测试管理接口
数据处理脚本:
import xml.etree.ElementTree as ET
import base64, csv
# XML解析和Base64解码
request_data = base64.b64decode(request_element.text).decode("utf-8")
header_body_split = request_data.split("\r\n\r\n", 1)
Intruder配置:
- 模式:Pitchfork
- Payload encoding取消勾选
- 多参数同时测试
5. 资源存储场景漏洞挖掘
5.1 合同资料遍历
漏洞原理:文件路径可预测
- 路径模式:
/docs/contract/2025/ID_0001.pdf - 缺乏访问权限控制
攻击方法:
- 爆破ID:0001-9999
- 增量遍历时间目录(2024/2025/2026)
- 批量下载敏感文件
5.2 S3存储桶配置不当
漏洞原理:云存储权限设置为Public Read
检测工具:
- https://github.com/dark-kingA/cloudTools
- AWS CLI:aws s3 ls s3://bucket-name/
敏感文件类型:
- 合同文档、财务报表
- 用户身份证扫描件
- 内部系统配置文件
5.3 SSRF及绕过
漏洞原理:外部URL请求功能可被利用
白名单绕过技术:
- 域名前缀匹配:evil.example.com.white.com
- URL编码、特殊字符
- HTTP重定向绕过
攻击验证:
- 使用DNSLog平台生成测试域名
- 尝试各种绕过技巧
- 观察DNS解析记录
6. 第三方厂商相关漏洞
6.1 JWT/密码硬编码
漏洞原理:默认配置未修改
- 初始化的appid、jwttoken密钥保持默认值
- 攻击者可伪造任意用户Token
检测方法:
- 检查JWT签名算法
- 尝试使用常见默认密钥签名
- 验证Token伪造可能性
6.2 运维后门
漏洞原理:外部URL获取敏感信息
常见后门模式:
curl http://password.example.com/db-prod-pass
wget http://x.x.x.x/getKey?env=prod
检测要点:
- 监控外部网络请求
- 检查代码中的硬编码URL
- 分析SSO接口的权限控制
7. 漏洞挖掘方法论
7.1 业务逻辑分析
- 深入理解资金流转规则
- 分析风控策略和账户体系
- 识别业务链路的关键节点
7.2 测试优先级
- 资金相关操作(支付、转账、提现)
- 用户敏感信息查询
- 身份认证和授权机制
- 文件存储和访问控制
7.3 自动化检测
- 定制化脚本针对特定业务逻辑
- Burp插件开发辅助测试
- 持续监控和回归测试
8. 防御建议
8.1 技术层面
- 实施完整的参数校验机制
- 关键操作添加分布式锁
- 使用decimal类型处理金融计算
- 实施最小权限原则
8.2 流程层面
- 安全开发生命周期管理
- 第三方组件安全评估
- 定期安全审计和渗透测试
本教学文档涵盖了金融SRC漏洞挖掘的完整知识体系,重点突出了业务逻辑漏洞的识别和利用技巧,为安全测试人员提供实用的方法论指导。