免费获取付费订阅服务的技术剖析

本文详细介绍了如何通过分析API端点、绕过手机验证和操纵订阅参数来免费获取付费服务的技术过程,包括响应篡改、端点发现和参数修改等关键步骤。

免费获取付费订阅服务的技术剖析

博客文章描述了我如何绕过订阅计划免费获取付费服务的访问权限。

希望大家都过得不错,我已经有一段时间没有发布博客了,所以决定利用这个博客与大家分享一些新的发现。这篇博客文章是关于我如何绕过订阅计划和付费墙免费使用付费服务的。

这个漏洞利用起来非常简单,但花了一些时间才弄清楚并实现。基本上,我在寻找免费使用该服务的方法。该应用程序有多个订阅计划,并使用Stripe进行支付。我会尽量保持简单。

背景

目标应用程序是一个娱乐平台,提供付费和免费视频,并要求用户在继续观看平台上的付费内容之前购买订阅。

此外,该应用程序只允许使用特定国家的手机号码进行注册/登录,用户也可以使用社交媒体账户注册/登录,但需要进行手机验证。

挑战

真正的挑战是,由于我没有该国家的手机号码,也没有使用社交媒体登录/注册(因为也需要验证手机号码),我在该平台上没有任何账户。

思考过程

为了绕过这个限制,我首先尝试看看是否可以使用该国家的任何手机号码进行注册。

当你使用手机号码注册时,必须通过发送到该号码的6位验证码进行验证。漏洞构建的第一部分从这里开始:我们需要验证码来访问/验证新创建的账户。

添加一个随机号码和6位随机代码,然后点击验证,会发送如下请求。通过操纵验证请求的响应代码,我们可以轻松绕过手机号码验证,如下例所示。

这样做之后,我们不再需要提供手机验证码,可以继续进行序列中的下一个请求。如果不绕过这个OTP验证,我们在测试中就无法取得进展。

在上面的请求中,你可以看到不再需要验证码,因此我们可以使用任何号码创建账户,甚至可以给我们的账户添加电子邮件,这很有趣,因为没有仅使用电子邮件注册或向账户添加电子邮件地址的选项。

无论如何,登录新账户后,你会看到一个弹出窗口。我尝试绕过订阅计划免费观看内容,但由于使用Stripe作为支付网关,绕过它相当困难,所以我剩下的唯一选择就是入侵该平台的API,以某种方式在我的账户上激活订阅。

我尝试操作和抓取API端点,以获取有关订阅计划的更多详细信息,并找到了端点,该端点基本上提供了我需要了解API中订阅计划的所有信息。

在花了足够的时间理解API中的订阅计划信息后,我尝试向现有账户添加订阅,但由于支付网关以及在编辑/账户更新请求中无法添加订阅选项,这是不可能的。但如果你仔细看,账户注册请求有一个有趣的选项:“cunsumerSubscription”: null,所以我决定创建一个新账户,并从包信息API请求中添加订阅包信息。新的注册请求看起来像这样。

仔细发送上述请求,我们可以创建一个绕过付费墙的账户,并创建一个已经附加了订阅的新账户。有趣的是,我们可以通过修改"durationDays"、“subscriptionStartDateTime"和"subscriptionEndDateTime"下的值来延长订阅期限。

所以基本上,我们不仅绕过了订阅,还能够创建一个具有无限订阅的账户。

就是这样。这就是我如何能够绕过付费墙并入侵订阅包的方法。深入研究看似无意义的事情总是好的。希望大家通过阅读这篇博客学到了一些新东西,并为黑客和开发者提供了一些关键要点。

给黑客的建议

  • 从多个角度审视目标
  • 尝试找到能提供信息的API端点
  • 学会在没有API文档的情况下构建请求
  • 不要因错误而气馁

给开发者的建议

  • 尽量不要通过API泄露关键信息,如秘密或订阅信息等
  • 不要让客户通过API请求更新不必要的信息
  • 正确验证OTP

“有时候,黑客行为只是某人在某件事上花费了比任何人合理预期更多的时间”

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计