文章总结: 本文分享作者在HackerOne项目中发现的订阅绕过漏洞。通过抓包发现隐藏的dev套餐,利用其重置试用期的逻辑,结合切换至Enterprise套餐的操作,实现了对付费功能的无限期免费访问,包括关键的下载与发送功能。该漏洞被定级为中危并获得奖励。 综合评分: 86 文章分类: 渗透测试,漏洞分析,SRC活动,实战经验
订阅绕过导致完全访问付费功能
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 功能可用
- 无需支付任何费用
完整攻击思路
作为攻击者,我可以:
- 正常使用平台,即便账号已过期
- 完成项目但不立即发送或下载
- 在需要使用成果时:
- 切换到 dev 套餐 → 获得新的 14 天试用期
- 再切换到 Enterprise 套餐
- 在试用期内 免费发送或下载项目
这意味着:
攻击者可以无限次绕过付费机制,彻底破坏平台的商业模式。
我刻意让这篇文章保持简洁,尽管背后涉及大量测试,只保留了最关键的细节。
最终:
- 漏洞被官方接受
- 定级为 Medium(中危)
- 我获得了漏洞奖励与额外奖金
按回车或点击查看大图
我也询问了为何该漏洞只被评为 Medium,官方给出了如下回复:
按回车或点击查看大图
感谢阅读,希望这篇分析对你有所帮助。
- 公众号:安全狗的自我修养
- vx:2207344074
- http://gitee.com/haidragon
- http://github.com/haidragon
- bilibili:haidragonx
#
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:安全狗的自我修养 hai dragon《订阅绕过导致完全访问付费功能》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论