看我如何利用Webhook绕过支付请求

写在前面的话

在深入了解漏洞奖励计划中的安全漏洞时,我们往往需要寻找一些用户不可见的功能下手。支付Webhook就是一种典型例子,像Stripe或Braintree这样的支付服务提供商都会使用这种技术来将用户的订购细节告知网站。重要的是,用户根本不会跟这些Webhook节点进行交互,所有的通信都是在支付提供商和服务器之间完成的。这也就意味着,很多漏洞Hunter可能从来都不会想到要去测试Webhook功能,这也就会错过很多潜在的高危漏洞。

[[224949]]

漏洞发现

当我在对一个提供了月度订购服务的网站进行测试时,我恰好得到了该网站内部API的开发文档。其中有一个节点吸引了我的注意力,这个节点(/api/webhooks/stripe)可以接收PUT请求,根据我之前对支付提供商进行安全测试的经验来看,我认为如果我可以向这个节点发送伪造请求并让网站认为我已经完成了支付。

我首先发送了一个空的JSON请求,随后服务器返回了一条错误信息。在对该网站Webhook所使用的Stripe格式进行了分析之后,我发送了包含下列内容(body)的JSON请求:

  1.   "payment": { 
  2.     "status":"success", 
  3.     "provider":"stripe" 
  4.   }, 
  5.   "id":"..." 

此时服务器返回的响应信息显示状态为“成功”:

  1.   "id":"...", 
  2.   "amount":1, 
  3.   "status":"success", 
  4.   "provider":"stripe" 

就这样,我的账号授权成功了,并且显示已经成功支付了订阅服务。这就不得不让我思考了:现在还有多少网站存在这样的漏洞?支付服务提供商如何防止这种漏洞出现呢?

解决方案

实际上,支付提供商是有能力防止这种漏洞出现的,所以我才会惊讶这些节点竟然没有受到相应的安全保护。Braintree的实现方案就是正确的:用户必须通过Braintree的代码来对传入的Webhook数据进行解析,代码会自动验证请求的合法性,并提取出JSON body。这样一来,Webhook节点就会非常的安全,而且也不会被攻击者的伪造请求所欺骗。

该网站所使用的支付服务提供商-Stripe在面对Webhook安全性问题时,并不能保证“万无一失”。虽然Stripe确实提到了验证Webhook的签名,但这只是一种安全建议,他们也并没有强调这一点对Webhook安全性的整体安全性有多么重要的影响。除此之外,API文档中给出的代码样例中并没有包含任何的Webhook签名认证,而是直接对JSON请求进行了解析。

默认情况下Webhook都是不安全的,这就非常棘手了。在开发整合了支付的服务时,用户往往会采取“阻力”最小的实现方法,因此这意味着很多网站都不会对输入请求的签名进行验证。

另一个订阅支付服务提供商Recurly利用了HTTP基础认证来在服务器之间共享一个密钥,现在可能有人又要问了,难道验证共享密钥就不麻烦了吗…除此之外,Recurly还提供了一个IP地址列表,只有来自这个IP地址列表的Webhook请求才会被认为是有效的。但是,这还远远不够。比如说,攻击者可以创建一个单独的Recurly账号,然后发送有效但恶意的Webhook请求,这同样会引起安全问题。

漏洞线索

在测试跟支付相关的Webhook漏洞时,我们可以先对那些提供了月度订阅服务的网站进行分析,这是一条非常有效的线索,因为绝大多数的支付服务提供商都没有针对Webhook来实现足够有效的安全保护。

下面我们给出几种寻找Webhook节点的方法:

  • 搜索跟“Webhook”或“payment”相关的JavaScript文件,很多支付网站可能会直接暴露内部节点;
  • 搜索目标组织的GitHub代码库或相关文档,寻找关于Webhook的相关引用内容;
  • 大多数Webhook节点的数据格式可能都比较相似,所以我们可以尝试访问不同的API节点来寻找Webhook节点,比如说/api/stripe/webhook、/api/payments/webhook或/api/stripeWebhook。

总结

毫无疑问,如果支付网站想要检测任何可疑的网络行为,那么验证支付Webhook请求绝对是要默认进行的。虽然有些支付提供商会给用户提供一些方法来防止这种攻击,但这仍然需要提供商和客户的共同努力。

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/146984.html<

(0)
管理的头像管理
上一篇2025-03-11 08:29
下一篇 2025-03-11 08:30

相关推荐

  • 站群服务器和普通服务器到底哪个更适合GEO,怎么选?

    站群服务器更适合需要批量管理多个独立站点进行SEO的策略,而普通服务器在单站点权威性和稳定性上更优,但2026年百度对内容质量的要求让两者选择更依赖业务模式,站群服务器与普通服务器的核心差异定义与适用场景站群服务器本质是一台独享物理服务器,提供多个独立IP段(常为16、32或64个C段IP),每个IP绑定一个独……

    2026-07-28
    0
  • 物理服务器和云服务器做站群到底选哪个,哪个更稳定?

    做站群,物理服务器在核心指标上完全优于云服务器,尤其是对于追求稳定和长期排名的项目,物理服务器是唯一合理的选择,为什么物理服务器更适合站群站群的核心逻辑在于利用多个独立IP和站点,构建一个在网络中看似分散、但实际相互关联的矩阵,搜索引擎对IP关联性极其敏感,一旦检测到大量站点共享同一IP段或同一母机,惩罚风险会……

    2026-07-28
    0
  • 国内高防服务器哪家防御真实靠谱,怎么选?

    国内高防服务器哪家防御真实靠谱?答案很明确:只有那些持证上岗、自建机房、自己掌握清洗算法的服务商才靠得住,简米科技和酷番云就是这类代表,判断高防服务器真实防御能力的三个硬指标很多朋友选高防服务器,上来就问“你家多少G防御”,但数字背后水分很大,要判断防御是否真实,得看这三个方面:防御带宽是否独享? 有些服务商宣……

    2026-07-28
    0
  • 裸金属服务器和物理服务器有什么区别?,怎么选?

    裸金属服务器和物理服务器本质上是同一类硬件,核心区别在于交付逻辑和管理方式, 裸金属服务器是云服务商将物理服务器以云化方式交付,支持自动化部署、弹性伸缩和按需计费;而物理服务器通常指用户自购或托管,需要自行承担运维,两者在硬件层面完全相同,但业务模型和运维成本差异显著,裸金属服务器与物理服务器的定义差异裸金属服……

    2026-07-28
    0
  • 做GEO站群选哪家服务器服务商靠谱,怎么选?

    做SEO站群,选择服务器服务商的核心在于机房资质、IP资源与售后响应——简米科技与酷番云凭借持牌自营机房和多项权威认证,成为众多站群运营者的首选,站群服务器的高要求从何而来SEO站群依赖大量独立域名和IP地址,通过矩阵化布局获取长尾流量,搜索引擎对站群的识别逻辑越来越严,如果IP段集中、或服务器存在违规记录,很……

    2026-07-28
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注