JWT安全认证及伪造爆破

兄弟姐妹们在线分析下,JWT安全认证及伪造爆破
最新回答
因你在

2022-11-23 12:36:45

Json web token (JWT) 是一种基于 JSON 的开放标准,用于在网络应用环境间传递声明,设计为紧凑且安全,适合用于分布式站点的单点登录(SSO)场景。JWT 的声明被用来在身份提供者和服务提供者间传递被认证的用户身份信息,用于从资源服务器获取资源,也可直接用于认证。

相较于传统的基于 session 的认证,JWT 采用无状态的方式,不需要在服务器端保留用户登录信息或会话信息。这种机制使得应用扩展更为便利,不受客户端增加的影响。

JWT 的认证流程如下:每次请求时,token 需要传递给服务端,通常存储在请求头中。服务端支持 CORS 策略,例如设置 Access-Control-Allow-Origin: *。JWT 由三个部分组成:头部、载荷和签证。

头部包含两部分信息,使用 JSON 表示并进行 base64 加密。JWT 支持使用“None”算法,若“alg”字段设为“None”,JWT 的签证部分会被置空,所有 token 均有效,便于伪造。

载荷部分存放有效信息,包含注册的公共声明、公共声明和私有声明。公共声明可添加用户信息或其他业务所需信息,但应避免包含敏感信息,因为该部分在客户端可解密。私有声明由提供者和消费者共同定义,一般不存放敏感信息。

签证部分由 base64 加密后的头部和载荷使用特定加密方式(通过头部声明)和 secret 组合加密形成。secret 作为服务端私钥,用于生成和验证 JWT,其安全性至关重要。

JWT 通过存储在 Cookie 或 localStorage 中,与服务器交互时自动携带。跨域时,可将 JWT 放置在 HTTP 请求的 Header Authorization 字段或 POST 请求数据主体中。

服务器验证 JWT 的前两部分加密结果与客户端传递的第三部分对比,验证通过则允许访问资源。使用 Authorization: Bearer JWT 格式进行身份验证。

JWT 存在安全问题,包括 token 泄露、伪造等风险。为减少盗用,JWT 有效期不宜过长。使用 HTTPS 传输更为安全。

JWT 可通过破解或伪造实现安全绕过,如印度举办的 CTF 比赛中遇到的题目。伪造 JWT 的过程包括解密、修改内容、使用密钥加密,需确保密钥安全。使用特定工具或破解服务,可尝试破解密钥并伪造数据通过服务器验证。

通过漏洞分析和源码恢复,如使用 base32 解码、下载 .swp 文件并恢复源码,可发现 JWT 使用的加密秘钥。构造 JWT 替换浏览器中的 token,实现登录和获取 flag。

JWT 安全问题要求严格管理密钥,避免源码泄露,并使用 HTTPS 等安全措施保护 JWT 传输。对敏感信息进行加密处理,定期更新密钥,增加安全验证步骤,以提高 JWT 的整体安全性。