仅通过阅读JS文件就能入侵网站?硬编码JWT令牌的安全隐患

本文详细描述了作者如何通过分析生产环境中的JavaScript文件发现硬编码的JWT令牌,揭示了WebSocket认证机制中的安全漏洞,尽管令牌已过期,但这暴露了严重的设计缺陷。

仅通过阅读JS文件就能入侵网站?

出于隐私考虑,我将使用[已编辑]代替应用程序的真实名称。

这就是我在生产环境中发现硬编码JWT的方式。虽然不够华丽,但很有效。

发现过程

这一切始于一次普通的漏洞搜寻:点击、扫描、重复。大量的噪音,没有信号。我尝试了常规检查,但一无所获。然后我感到无聊,打开了生产环境的JavaScript包,因为静态文件往往是秘密藏身之处。

我没想到会直接看到一个明文显示的令牌:

1
var socketJWT = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...";

是的,一个JWT令牌。在生产环境中。在客户端文件中。用于WebSocket认证。有人竟然把认证令牌放在了任何人都可以读取的地方。

实际发现

  • [已编辑]的生产包中包含一个名为socketJWT的变量
  • 该令牌用于验证连接到语音/AI socket端点的WebSocket连接
  • 令牌已过期,到期时间:2021年11月12日,这使他们避免了立即的实时入侵

安全启示

尽管如此,过期的令牌证明了设计问题:如果一个过期的令牌能够混入,那么有效的令牌也可能如此。


创建账户阅读完整故事。作者仅向Medium会员提供此故事。

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