挖洞经验 | 看我如何用一美分购买VPS服务和网站空间
字数 1326 2025-08-18 11:39:08

利用支付漏洞实现低价购买服务的分析与教学

漏洞概述

本文档详细分析了一种支付系统漏洞,允许攻击者通过修改支付金额参数,以极低价格(如1美分)购买高价值的VPS和网站托管服务。该漏洞涉及两类服务商和两种支付方式(PayPal和虚拟货币)。

漏洞发现背景

  • 目标服务

    • redacted.net:VPS服务提供商
    • redacted.com:网站托管服务提供商
  • 支付方式

    • PayPal结算(VPS服务)
    • 虚拟货币TRONIX(网站托管服务)

漏洞详细分析

1. PayPal支付漏洞(VPS服务)

漏洞原理
服务端未对支付金额进行二次验证,完全依赖客户端提交的金额参数。

攻击步骤

  1. 正常选择VPS服务并进入PayPal支付流程
  2. 拦截支付请求(使用Burp Suite等工具)
  3. 修改请求中的金额参数:
    • 原始请求:&amount=1321&tax=12&...
    • 修改为:&amount=0.01&tax=0&...
  4. 提交修改后的请求完成支付
  5. 接收并确认服务商发送的"Confirm My Payment"邮件
  6. 成功以0.01美元获取VPS服务

关键点

  • 服务商未在服务器端验证实际支付金额与订单金额是否匹配
  • PayPal支付网关(Braintree Payments)未设置合理的数据过滤/验证措施

2. 虚拟货币支付漏洞(网站托管服务)

漏洞原理
系统仅验证交易ID的有效性,不验证实际支付金额。

攻击步骤

  1. 选择网站托管服务并进入虚拟货币支付流程
  2. 进行最小金额支付(0.01美元)
  3. 获取有效的Trx ID(TRONIX支付ID)
  4. 系统仅验证Trx ID有效性,不检查支付金额
  5. 成功以0.01美元获取价值约90-95美元的网站空间

关键点

  • 系统设计缺陷:只验证交易存在性,不验证交易金额
  • 虚拟货币支付流程缺乏金额核对机制

漏洞上报与处理

  • 时间线
    • 2019.11.1:发现并上报redacted.net支付漏洞
    • 2019.11.2:发现并上报redacted.com支付漏洞
    • 2019.11.3:redacted.com奖励$500
    • 2019.11.4:redacted.net奖励100万印尼卢比(约$71)

防御建议

对于服务提供商

  1. 支付金额验证

    • 在服务器端存储订单金额
    • 支付完成后,从支付网关API获取实际支付金额进行比对
  2. 支付流程加固

    • 使用支付网关提供的签名机制,防止参数篡改
    • 实现双重验证:客户端提交金额+服务器端验证金额
  3. 虚拟货币支付改进

    • 验证交易金额与订单金额是否匹配
    • 设置最小支付金额阈值
  4. 监控与告警

    • 设置异常支付金额告警(如远低于正常价格的交易)
    • 定期审计支付交易记录

对于支付网关

  1. 提供强制金额验证选项
  2. 实现请求参数签名机制
  3. 提供支付金额变更告警功能

漏洞利用限制

  1. 需要服务商使用存在缺陷的支付集成方式
  2. 部分支付网关已内置防护机制
  3. 成功利用后可能面临法律风险
  4. 服务商可能事后发现并撤销服务

总结

该案例展示了支付系统中常见的业务逻辑漏洞,核心问题是信任了客户端提供的支付参数而未在服务端进行验证。开发人员在实现支付功能时应遵循"不信任客户端"原则,对所有关键参数(尤其是金额)进行服务端验证。

利用支付漏洞实现低价购买服务的分析与教学 漏洞概述 本文档详细分析了一种支付系统漏洞,允许攻击者通过修改支付金额参数,以极低价格(如1美分)购买高价值的VPS和网站托管服务。该漏洞涉及两类服务商和两种支付方式(PayPal和虚拟货币)。 漏洞发现背景 目标服务 : redacted.net:VPS服务提供商 redacted.com:网站托管服务提供商 支付方式 : PayPal结算(VPS服务) 虚拟货币TRONIX(网站托管服务) 漏洞详细分析 1. PayPal支付漏洞(VPS服务) 漏洞原理 : 服务端未对支付金额进行二次验证,完全依赖客户端提交的金额参数。 攻击步骤 : 正常选择VPS服务并进入PayPal支付流程 拦截支付请求(使用Burp Suite等工具) 修改请求中的金额参数: 原始请求: &amount=1321&tax=12&... 修改为: &amount=0.01&tax=0&... 提交修改后的请求完成支付 接收并确认服务商发送的"Confirm My Payment"邮件 成功以0.01美元获取VPS服务 关键点 : 服务商未在服务器端验证实际支付金额与订单金额是否匹配 PayPal支付网关(Braintree Payments)未设置合理的数据过滤/验证措施 2. 虚拟货币支付漏洞(网站托管服务) 漏洞原理 : 系统仅验证交易ID的有效性,不验证实际支付金额。 攻击步骤 : 选择网站托管服务并进入虚拟货币支付流程 进行最小金额支付(0.01美元) 获取有效的Trx ID(TRONIX支付ID) 系统仅验证Trx ID有效性,不检查支付金额 成功以0.01美元获取价值约90-95美元的网站空间 关键点 : 系统设计缺陷:只验证交易存在性,不验证交易金额 虚拟货币支付流程缺乏金额核对机制 漏洞上报与处理 时间线 : 2019.11.1:发现并上报redacted.net支付漏洞 2019.11.2:发现并上报redacted.com支付漏洞 2019.11.3:redacted.com奖励$500 2019.11.4:redacted.net奖励100万印尼卢比(约$71) 防御建议 对于服务提供商 支付金额验证 : 在服务器端存储订单金额 支付完成后,从支付网关API获取实际支付金额进行比对 支付流程加固 : 使用支付网关提供的签名机制,防止参数篡改 实现双重验证:客户端提交金额+服务器端验证金额 虚拟货币支付改进 : 验证交易金额与订单金额是否匹配 设置最小支付金额阈值 监控与告警 : 设置异常支付金额告警(如远低于正常价格的交易) 定期审计支付交易记录 对于支付网关 提供强制金额验证选项 实现请求参数签名机制 提供支付金额变更告警功能 漏洞利用限制 需要服务商使用存在缺陷的支付集成方式 部分支付网关已内置防护机制 成功利用后可能面临法律风险 服务商可能事后发现并撤销服务 总结 该案例展示了支付系统中常见的业务逻辑漏洞,核心问题是信任了客户端提供的支付参数而未在服务端进行验证。开发人员在实现支付功能时应遵循"不信任客户端"原则,对所有关键参数(尤其是金额)进行服务端验证。