订阅绕过导致完全访问付费功能

admin 2025-12-26 01:38:44 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文分享作者在HackerOne项目中发现的订阅绕过漏洞。通过抓包发现隐藏的dev套餐,利用其重置试用期的逻辑,结合切换至Enterprise套餐的操作,实现了对付费功能的无限期免费访问,包括关键的下载与发送功能。该漏洞被定级为中危并获得奖励。 综合评分: 86 文章分类: 渗透测试,漏洞分析,SRC活动,实战经验


cover_image

订阅绕过导致完全访问付费功能

hai dragon

安全狗的自我修养

2025年12月25日 14:49 湖南

官网:http://securitytech.cc/

#

大家好,今天我将分享一个我在 HackerOne 上的漏洞赏金项目中发现的漏洞。 出于保密原因,本文中我将目标平台统一称为 example.com

本文主要聚焦于一个与订阅与套餐管理相关的业务逻辑漏洞。该漏洞允许我绕过付费套餐限制,在不付费的情况下访问高级功能。我会详细介绍我的思考过程、测试方法,以及一次看似简单的观察是如何最终演变为一个高影响漏洞的。

在深入漏洞细节之前,先简单介绍一下目标系统的背景,便于理解。


订阅套餐背景

该平台提供 三种订阅套餐

  • Starter
  • Business
  • Enterprise

这三个套餐全部为付费套餐,主要区别在于各自可使用的功能不同。

当用户创建新账号时,系统会自动分配 Starter 套餐,并附带 14 天免费试用期。 试用期结束后,用户必须选择付费订阅 Starter 套餐,或升级到其他套餐才能继续使用平台功能。


异常行为的发现

创建账号后,我开始探索平台功能,以更好地理解其运行机制。在浏览可用功能时,我注意到某个功能显示了类似以下提示:

“升级到 Enterprise 才能使用该功能”

同时还提供了一个按钮,点击后会自动将账号升级到 Enterprise 套餐

出于好奇,我点击了该按钮,并确认我的套餐确实从 Starter 直接升级到了 Enterprise,而且该功能立刻可以正常使用。

有意思的是,这是唯一一个提供这种“直接升级”选项的功能,这种行为看起来非常特殊,也让我产生了疑问。


请求分析

接下来,我决定分析触发套餐升级的底层请求,请求大致如下:

我注意到被升级到的套餐标识为:

rec_plans_v4_enterprise_an

这让我产生了一个想法:如果我修改这个套餐名称会发生什么?

此时我并没有刻意去“利用”漏洞,只是想观察系统行为——因为这种地方经常隐藏着业务逻辑问题。于是我打开了 Burp Suite 的历史记录,查看是否能找到其他响应中出现的套餐名称,例如我最初所在的套餐,或者系统中是否还存在其他未公开的套餐。

这是我在测试过程中经常会做的一步,因为 Burp 历史记录里往往能发现 UI 上看不到的重要信息。


发现隐藏套餐

随后,我提取了套餐名称中的公共前缀:

rec_plans

我猜测这是所有套餐 ID 的通用前缀,于是开始在 Burp Suite 的所有响应中搜索这个字段。最终,我发现了一个 API 请求,其响应中返回了一个包含大量套餐的列表。

该请求如下所示:

按回车或点击查看大图

我开始逐一测试这些套餐标识,结果发现:我可以毫无阻碍地切换到这些套餐

需要注意的是,这一切都发生在我最初获得的 14 天免费试用期内

同时还要说明的是,平台在 UI 中只向用户展示了三种套餐。 但通过 API 我发现的这些套餐,是额外存在的内部套餐,无法通过 UI 选择,只能通过修改 API 请求访问。



试用期结束后的测试

此时的行为开始变得有些混乱。

  • 有些套餐是付费套餐(正常订阅并不算漏洞)
  • 有些套餐是免费的,但功能限制极多,几乎无法使用

真正的问题是:当 14 天试用期结束后会发生什么?

于是我决定等待试用期结束后再继续测试。 原因是:在试用期内,很多行为都可能属于“正常试用逻辑”,只有在试用期结束后,系统行为才能真正暴露是否存在业务逻辑缺陷。


过期状态下的异常行为

14 天试用期结束后,我返回平台,发现账号状态已变为 过期(Expired),必须升级套餐才能使用任何功能。

此时,我使用之前保存的套餐切换请求,将套餐从例如 Business 切换到 Enterprise

请求成功后:

  • 套餐确实发生了变化
  • 但账号状态仍然显示为 Expired
  • 系统仍然提示需要付费

然而,我发现一个关键点:部分与新套餐相关的功能已经被解锁了

也就是说:

即便账号已过期,某些高级功能仍然可以使用。


第一次报告被拒

基于这一点,我最初认为这是一个漏洞并提交了报告。 但该报告被拒绝了,原因是:我仍然无法下载或发送项目

什么是 Download 和 Send?

在该平台中,用户围绕一个 Project(项目) 工作,并在项目中使用各种功能。

当项目完成后,平台要求你:

  • Send(发送) 给他人
  • 或 Download(下载) 到本地

这一步是“真正使用成果”的关键。

我这时意识到:

即使我解锁了所有功能、完成了项目,只要无法 Send 或 Download,这个项目实际上是无法使用的,除非我付费。


寻找真正的绕过方式

于是,我开始思考如何绕过 Send / Download 限制。 我尝试在不同套餐之间反复切换,测试是否存在某个套餐能解锁这些操作。

例如:

  • 在 Enterprise 套餐下完成项目
  • 切换到其他套餐
  • 检查是否能 Send 或 Download

我不断在这些套餐之间来回切换,直到发生了一件意想不到的事情。


关键发现:dev 套餐

在测试某个内部套餐时,我发现了一个名为:

dev

的套餐,看起来像是为开发人员准备的内部套餐。

当我切换到 dev 套餐时,系统竟然再次为我分配了一个全新的 14 天免费试用期,而且这是独立于我最初注册时的试用期

这个行为只在 dev 套餐上发生。

遗憾的是,dev 套餐本身并不允许 Send 或 Download,这也符合它作为开发用途套餐的定位。


致命组合漏洞

此时我产生了一个关键问题:

如果我在 dev 套餐获得的新 14 天试用期内,再切换回 Enterprise,会发生什么?

于是我从 dev 套餐 切换回 Enterprise 套餐

结果是灾难性的:

  • 14 天免费试用期仍然有效
  • Enterprise 所有功能全部解锁
  • Send 和 Download 功能可用
  • 无需支付任何费用

完整攻击思路

作为攻击者,我可以:

  1. 正常使用平台,即便账号已过期
  2. 完成项目但不立即发送或下载
  3. 在需要使用成果时:
  • 切换到 dev 套餐 → 获得新的 14 天试用期
  • 再切换到 Enterprise 套餐
  1. 在试用期内 免费发送或下载项目

这意味着:

攻击者可以无限次绕过付费机制,彻底破坏平台的商业模式。


我刻意让这篇文章保持简洁,尽管背后涉及大量测试,只保留了最关键的细节。

最终:

  • 漏洞被官方接受
  • 定级为 Medium(中危)
  • 我获得了漏洞奖励与额外奖金

按回车或点击查看大图

我也询问了为何该漏洞只被评为 Medium,官方给出了如下回复:

按回车或点击查看大图


感谢阅读,希望这篇分析对你有所帮助。

  • 公众号:安全狗的自我修养
  • vx:2207344074
  • http://gitee.com/haidragon
  • http://github.com/haidragon
  • bilibili:haidragonx

#


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:安全狗的自我修养 hai dragon《订阅绕过导致完全访问付费功能》

评论:0   参与:  2