挖洞经验 | 看我如何用一美分购买VPS服务和网站空间
字数 1326 2025-08-18 11:39:08
利用支付漏洞实现低价购买服务的分析与教学
漏洞概述
本文档详细分析了一种支付系统漏洞,允许攻击者通过修改支付金额参数,以极低价格(如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获取实际支付金额进行比对
-
支付流程加固:
- 使用支付网关提供的签名机制,防止参数篡改
- 实现双重验证:客户端提交金额+服务器端验证金额
-
虚拟货币支付改进:
- 验证交易金额与订单金额是否匹配
- 设置最小支付金额阈值
-
监控与告警:
- 设置异常支付金额告警(如远低于正常价格的交易)
- 定期审计支付交易记录
对于支付网关
- 提供强制金额验证选项
- 实现请求参数签名机制
- 提供支付金额变更告警功能
漏洞利用限制
- 需要服务商使用存在缺陷的支付集成方式
- 部分支付网关已内置防护机制
- 成功利用后可能面临法律风险
- 服务商可能事后发现并撤销服务
总结
该案例展示了支付系统中常见的业务逻辑漏洞,核心问题是信任了客户端提供的支付参数而未在服务端进行验证。开发人员在实现支付功能时应遵循"不信任客户端"原则,对所有关键参数(尤其是金额)进行服务端验证。