某积分商城任意金额支付漏洞分析利用及思考
字数 1134 2025-08-19 12:42:11

某积分商城任意金额支付漏洞分析利用及思考

漏洞概述

本漏洞存在于某积分商城的支付系统中,允许攻击者通过修改支付请求参数实现任意金额支付(0元支付或自定义金额支付),属于业务逻辑漏洞。

漏洞发现过程

  1. 攻击者使用Burp Suite(简称bp)拦截支付请求
  2. 发现请求中包含origin参数未做校验
  3. 通过修改origin参数值可绕过支付金额验证

关键漏洞点

  1. origin参数未校验:服务器未对客户端提交的origin参数进行有效性验证
  2. 金额验证缺失:后端未将支付金额与商品实际价格进行比对
  3. 参数可控:客户端可以完全控制origin参数值

漏洞利用步骤

  1. 准备工具

    • Burp Suite(用于拦截和修改HTTP请求)
    • 浏览器(用于正常访问商城)
  2. 操作流程

    • 正常选择商品并进入支付流程
    • 使用Burp Suite拦截支付请求
    • 定位到包含origin参数的请求
    • 修改origin参数值为0或任意金额
    • 转发修改后的请求
    • 观察是否成功以修改后的金额完成支付
  3. 请求示例

    POST /api/payment HTTP/1.1
    Host: target.com
    Content-Type: application/json
    
    {
      "product_id": "123",
      "amount": "100",
      "origin": "100"  // 修改此值为0或其他金额
    }
    

漏洞原理分析

  1. 前端正常提交支付金额到后端
  2. 后端仅信任客户端提交的origin参数作为最终支付金额
  3. 缺乏以下安全措施:
    • 未从数据库查询商品实际价格进行比对
    • 未对origin参数进行签名或加密
    • 未实施服务端金额验证逻辑

修复建议

  1. 服务端验证

    • 从数据库查询商品实际价格
    • 比对客户端提交金额与实际价格是否一致
    • 拒绝不一致的支付请求
  2. 参数保护

    • 对关键参数进行签名或加密
    • 不要信任客户端提交的敏感参数
  3. 业务逻辑改进

    • 实现支付金额的二次确认机制
    • 记录完整的支付日志用于审计
  4. 输入验证

    • 对所有输入参数进行严格验证
    • 实施白名单验证策略

思考与总结

  1. 漏洞成因:过度信任客户端提交的数据是常见的安全问题
  2. 检测方法:修改关键参数观察系统行为是基本的渗透测试手段
  3. 防御思路:"永远不要信任客户端"应作为基本安全原则
  4. 工具使用:Burp Suite等代理工具是发现此类漏洞的利器

相关工具说明

  1. Burp Suite

    • 用于拦截和修改HTTP/HTTPS请求
    • 社区讨论中提到的"bp"即指此工具
    • 提供Repeater模块可重复发送修改后的请求
  2. CyberChef

    • 可用于解密或编码数据
    • 在分析加密参数时可能有用

注意事项

  1. 漏洞测试应在授权范围内进行
  2. 发现漏洞应及时报告给相关厂商
  3. 未经授权的测试可能涉及法律风险

扩展学习

  1. 类似漏洞模式:

    • 价格参数篡改
    • 数量参数篡改(如"-1")
    • 折扣率参数篡改
  2. 其他测试技巧:

    • 尝试修改HTTP方法(POST/GET)
    • 测试参数缺失的情况
    • 测试极端值和大数值

本漏洞案例展示了业务逻辑漏洞的典型特征,强调了服务端验证的重要性,为安全开发和渗透测试提供了有价值的参考。

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