某教学平台支付逻辑漏洞

admin 2025年1月7日10:09:32评论24 views字数 1741阅读5分48秒阅读模式
某教学平台支付逻辑漏洞

关注公众号,阅读优质好文。

今天要讲的这个漏洞的核心思想是破坏业务逻辑的工作流程,具体来说是一个支付绕过漏洞,更具体地说是“低价购”。

漏洞细节

我们的目标应用程序是一个在线教学平台,分为两个主体:教师和学生。学生可以向特定的老师购买课程,然后通过会议/课程的形式使用所购买的内容。教学主题多样,包括数学、科学、语言、设计等各种内容。

该应用程序使用了两个第三方服务来处理支付:

  • Skyflowapis(用于加密信用卡信息)

  • Payrails(用于启动支付流程)

接下来我们讨论一下整个支付流程。在流程的开始阶段,当用户输入信用卡信息时,会向 Skyflowapis 发送一个请求,以加密用户提交的信用卡数据:

某教学平台支付逻辑漏洞

接着来到Payrails,这里的流程设计得非常复杂,那么它是如何与我们的目标应用交互的呢?

首先,流程从以下调用开始:CreateOrUpdateOrder 查询。某教学平台支付逻辑漏洞

这个 CreateOrUpdateOrder 查询会为我们创建一个订单,它只需要教师的 ID 和我们需要的课程数量。然后,它会生成一个带有 orderId 和金额的订单。

接下来,进入initialisePayrailsClient 查询,目标程序会使用刚刚生成的 OrderId 调用 Payrails,并通过以下调用生成一个用于完成支付流程的 JWT token:

某教学平台支付逻辑漏洞

这个 JWT(JSON Web Token)在响应中包含以下信息:

某教学平台支付逻辑漏洞

它包含了一些数据,特别是金额(amount)。

然后我们将这个 JWT 用作 Authorization header(授权头),并将剩余的数据作为 POST 数据发送。

我在这里尝试了很多种操作,比如:

  • 支付比实际请求价格更低的金额

  • 使用负金额

  • 执行其他恶意操作

但是这些尝试都失败了。目标系统不断返回错误提示,拒绝了我的所有操作:

某教学平台支付逻辑漏洞

这说明,当我修改 payrails POST 数据 中的价格时,后端会将提交的 POST 数据中的金额与 JWT 中的金额进行比较。

那还有什么方法能够让金额更低,并同时让我获得更多的课程呢?

回到第一个请求 CreateOrUpdateOrder:生成的 OrderId 接收了什么输入?

它只接收了 leadId(老师的 ID)+ 课程数量。最终价格是在后端计算出来的,如果老师每节课价格是 25 美元,那么 4 节课的价格就是 100 美元。

支付完成后,后端会检查 OrderId 中包含的课程数量,并验证是否支付成功。这就是突破点。

某教学平台支付逻辑漏洞

现在使用 initialisePayrailsClient 为这个 OrderId(包含 1 节课、价格 25 美元的订单 ID)生成一个 payrails JWT

这个 payrails JWT 的值中只包含 25 美元。因为它依赖于 OrderId 的数据某教学平台支付逻辑漏洞

某教学平台支付逻辑漏洞

现在拦截并暂停正在处理的请求,然后在 Repeater 中调用CreateOrUpdateOrder,并将课程数量更新为4,例如某教学平台支付逻辑漏洞

现在我们拥有一个有效的 payrails JWT,其中金额为 25 美元,而 OrderId 包含 4 门课程。

完成 payrails 支付后,我们将获得 4 门课程,而不仅仅是 1 门。

如图:

某教学平台支付逻辑漏洞
某教学平台支付逻辑漏洞

看到这里,你就能明白漏洞点了:

  • 系统只验证JWT的金额与请求包中的金额是否一致,一致则通过交易。

  • 在支付成功后,后端会根据订单 ID 查询课程数量,如果支付成功,系统会认为订单中包含的课程数量是实际购买的课程数量。

我提交了报告,回复和奖励的时间有些晚,但在 2 到 3 天内修复了。

某教学平台支付逻辑漏洞

培训咨询v

bc52013 或  linglongsec

SRC漏洞挖掘培训

玲珑安全第一期SRC漏洞挖掘培训

玲珑安全第二期SRC漏洞挖掘培训

玲珑安全第三期SRC漏洞挖掘培训

玲珑安全第四期SRC漏洞挖掘培训

玲珑安全第五期SRC漏洞挖掘培训

往期漏洞分享

通过模拟功能实现提权(Bugcrowd)

JS Review+GraphQL滥用实现管理面板访问

绕过电子邮件确认实现预账户接管

价值$3000的Google Slides IDOR漏洞

通过有趣的逻辑漏洞实现账户接管

一个漏洞让我年入数百万

从2FA绕过到账户接管

简单P1:通过开发者工具解锁专业版和企业版功能

玲珑安全B站公开课

https://space.bilibili.com/602205041

玲珑安全QQ群

191400300

原文始发于微信公众号(芳华绝代安全团队):某教学平台支付逻辑漏洞

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年1月7日10:09:32
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   某教学平台支付逻辑漏洞https://cn-sec.com/archives/3599099.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息