某积分商城任意金额支付漏洞分析利用及思考
字数 1134 2025-08-19 12:42:11
某积分商城任意金额支付漏洞分析利用及思考
漏洞概述
本漏洞存在于某积分商城的支付系统中,允许攻击者通过修改支付请求参数实现任意金额支付(0元支付或自定义金额支付),属于业务逻辑漏洞。
漏洞发现过程
- 攻击者使用Burp Suite(简称bp)拦截支付请求
- 发现请求中包含origin参数未做校验
- 通过修改origin参数值可绕过支付金额验证
关键漏洞点
- origin参数未校验:服务器未对客户端提交的origin参数进行有效性验证
- 金额验证缺失:后端未将支付金额与商品实际价格进行比对
- 参数可控:客户端可以完全控制origin参数值
漏洞利用步骤
-
准备工具:
- Burp Suite(用于拦截和修改HTTP请求)
- 浏览器(用于正常访问商城)
-
操作流程:
- 正常选择商品并进入支付流程
- 使用Burp Suite拦截支付请求
- 定位到包含origin参数的请求
- 修改origin参数值为0或任意金额
- 转发修改后的请求
- 观察是否成功以修改后的金额完成支付
-
请求示例:
POST /api/payment HTTP/1.1 Host: target.com Content-Type: application/json { "product_id": "123", "amount": "100", "origin": "100" // 修改此值为0或其他金额 }
漏洞原理分析
- 前端正常提交支付金额到后端
- 后端仅信任客户端提交的origin参数作为最终支付金额
- 缺乏以下安全措施:
- 未从数据库查询商品实际价格进行比对
- 未对origin参数进行签名或加密
- 未实施服务端金额验证逻辑
修复建议
-
服务端验证:
- 从数据库查询商品实际价格
- 比对客户端提交金额与实际价格是否一致
- 拒绝不一致的支付请求
-
参数保护:
- 对关键参数进行签名或加密
- 不要信任客户端提交的敏感参数
-
业务逻辑改进:
- 实现支付金额的二次确认机制
- 记录完整的支付日志用于审计
-
输入验证:
- 对所有输入参数进行严格验证
- 实施白名单验证策略
思考与总结
- 漏洞成因:过度信任客户端提交的数据是常见的安全问题
- 检测方法:修改关键参数观察系统行为是基本的渗透测试手段
- 防御思路:"永远不要信任客户端"应作为基本安全原则
- 工具使用:Burp Suite等代理工具是发现此类漏洞的利器
相关工具说明
-
Burp Suite:
- 用于拦截和修改HTTP/HTTPS请求
- 社区讨论中提到的"bp"即指此工具
- 提供Repeater模块可重复发送修改后的请求
-
CyberChef:
- 可用于解密或编码数据
- 在分析加密参数时可能有用
注意事项
- 漏洞测试应在授权范围内进行
- 发现漏洞应及时报告给相关厂商
- 未经授权的测试可能涉及法律风险
扩展学习
-
类似漏洞模式:
- 价格参数篡改
- 数量参数篡改(如"-1")
- 折扣率参数篡改
-
其他测试技巧:
- 尝试修改HTTP方法(POST/GET)
- 测试参数缺失的情况
- 测试极端值和大数值
本漏洞案例展示了业务逻辑漏洞的典型特征,强调了服务端验证的重要性,为安全开发和渗透测试提供了有价值的参考。