挖洞经验 | 通过购物车参数篡改实现低价免费购买商品
字数 1236 2025-08-18 11:38:56
参数篡改漏洞(Parameter Tampering)实战教学文档
漏洞概述
参数篡改(Parameter Tampering)是一种通过修改Web应用交互中传输的参数数据来实现攻击的技术。攻击者可以操纵cookies、请求参数、隐藏表单字段或URL查询字符串中的数据,如用户凭证、权限、产品价格、数量等,从而非法获取利益或深入攻击系统。
漏洞原理
在电子商务网站中,常见的参数篡改漏洞表现为:
- 服务器未对客户端提交的参数进行充分验证
- 业务逻辑存在缺陷,允许异常值通过
- 仅在前端进行验证而缺乏后端校验
案例详细分析
漏洞发现过程
- 目标网站:某流行电子商务购物网站(redacted.com)
- 测试范围:购物车和支付系统
- 关键发现:
- 网站对购物车商品数量设置了上限(10件)
- 但未设置数量下限,允许输入负值
漏洞利用步骤
- 添加正常商品:选择一件商品(如单价599₹的T恤)加入购物车
- 拦截请求:使用代理工具(如Burp Suite)拦截添加购物车的请求
- 参数篡改:将商品数量参数修改为负数(如-10)
- 计算:-10 * 599₹ = -5990₹
- 添加平衡商品:
- 添加7双单价399₹的鞋子:7*399₹ = 2793₹
- 添加8条单价399₹的牛仔裤:8*399₹ = 3192₹
- 总金额计算:
- -5990₹ + 2793₹ + 3192₹ = -5₹
- 绕过最低支付限制:
- 由于消费税(GST)要求最低支付350₹
- 添加1件单价599₹的T恤:594₹
- 加上GST 329₹,总计923₹
- 完成支付:使用信用卡成功支付
实际获利
本应支付:7399₹ + 8399₹ + 599₹ = 6584₹
实际支付:923₹
节省:5661₹ (约86%折扣)
防御措施
-
输入验证:
- 对所有用户输入进行严格验证
- 设置合理的上下限(如商品数量必须为正整数)
- 验证数据类型和范围
-
业务逻辑校验:
- 在服务器端重新计算订单总金额
- 比较客户端提交金额与服务器计算金额
- 使用哈希校验防止篡改(如MD5)
-
安全设计:
- 不要信任客户端提交的任何数据
- 关键参数(如价格)应从服务器获取,而非客户端提交
- 实现双重验证机制
-
审计与监控:
- 记录异常订单(如负数量、异常折扣)
- 设置交易金额异常警报
- 定期进行安全审计
测试方法论
-
边界测试:
- 尝试超出正常范围的输入值
- 测试负数、零、极大值等特殊情况
-
数据类型测试:
- 尝试非数字字符、浮点数等
- 测试特殊字符和编码
-
流程完整性测试:
- 检查每个业务步骤的验证机制
- 验证前后端一致性
-
敏感操作审计:
- 检查关键操作(如支付)的日志记录
- 验证是否有防篡改机制
总结
参数篡改漏洞利用电子商务网站业务逻辑缺陷,通过操纵交易参数获取非法利益。防御此类漏洞需要:
- 全面的输入验证
- 严格的业务逻辑控制
- 不信任任何客户端数据
- 完善的监控审计机制
开发人员应始终遵循"不信任客户端"原则,对所有关键操作实施服务器端验证,确保系统安全。