免费破解订阅计划
作者:MuhammadKhizerJaved
这篇博客文章描述了我如何绕过订阅计划,免费获得付费服务的访问权限。
希望大家一切安好,我已经有一段时间没有发布博客了,所以我决定利用这个博客与大家分享一些新的发现。这篇博客文章是关于我如何绕过订阅计划和支付墙,免费使用付费服务的。
这个漏洞利用起来非常简单,但花了一些时间才弄清楚并实现。基本上,我在寻找一种免费使用该服务的方法。该应用程序有多个订阅计划,并使用Stripe进行支付。我会尽量保持简单。
背景
目标应用程序是一个娱乐平台,既有付费视频也有免费视频,要求用户购买订阅后才能继续观看平台上的付费内容。
此外,该应用程序只允许用户使用特定国家的手机号码注册/登录,用户也可以使用社交媒体账户注册/登录,但需要进行手机验证。
挑战
真正的挑战是,由于我没有该国家的手机号码,也没有使用社交媒体登录/注册(还需要验证手机号码),我在该平台上没有任何账户。
思考过程
为了绕过这一点,我首先尝试看看是否可以使用该国家的任何手机号码进行注册。
当你用手机号码注册时,必须用发送到该号码的6位验证码进行验证。漏洞构建的第一部分从这里开始:我们需要验证码来访问/验证新创建的账户。
添加一个随机号码和6位随机验证码,点击“验证”,会发送如下请求。通过操纵验证请求的响应代码,我们可以轻松绕过手机号码验证,如下例所示。
这样做之后,我们不再需要提供手机验证码,可以继续下一个请求序列。如果不绕过这个OTP验证,我们在测试中无法取得进展。
在上面的请求中,你可以看到不再需要验证码,因此我们可以使用任何号码创建账户,甚至可以添加电子邮件到我们的账户,这很有趣,因为原本没有选项可以仅使用电子邮件地址注册或将电子邮件地址添加到账户。
无论如何,登录到新账户后,你会看到一个弹出窗口。我尝试绕过订阅计划免费观看内容,但由于使用Stripe作为支付网关,绕过它相当困难,所以我剩下的唯一选择是黑客攻击该平台的API,以某种方式激活我账户上的订阅。
我尝试玩弄和抓取API端点,以了解更多关于订阅计划的详细信息,并找到了端点,它基本上给了我了解API中订阅计划所需的所有信息。
在花了足够的时间理解API中的订阅计划信息后,我尝试向现有账户添加订阅,但由于支付网关和在编辑/账户更新请求中没有添加订阅的选项,这是不可能的。但如果你仔细看,账户注册请求有一个这样的选项:“consumerSubscription”: null,这很有趣,所以我决定创建一个新账户,并从包信息API请求中添加订阅包信息。新的注册请求看起来像这样。
仔细发送上述请求,我们可以创建一个绕过支付墙的账户,并创建一个已经附加了订阅的新账户。有趣的是,我们可以通过修改“durationDays”、“subscriptionStartDateTime”和“subscriptionEndDateTime”下的值来延长订阅期限。
因此,我们不仅绕过了订阅,还能够创建一个具有无限订阅的账户。
就这样,这就是我如何绕过支付墙并黑客攻击订阅包的方法。总是好的去研究那些看似无意义的事情。希望大家通过阅读这篇博客学到了一些新东西,并为黑客和开发者提供了一些关键要点。
给黑客的建议
- 从多个角度审视目标
- 尝试找到能给你信息的API端点
- 学会在没有API文档的情况下构建请求
- 不要因为错误而气馁
给开发者的建议
- 尽量不要通过API泄露关键信息,如秘密或订阅信息等
- 不要让客户通过API请求更新不必要的信息
- 正确验证OTP
“有时候,黑客只是某人在某件事上花费了比任何人合理预期更多的时间”