JWT攻击

admin 2025年2月17日08:41:51评论24 views字数 1176阅读3分55秒阅读模式
JWT攻击
01
JWT

JSON Web Token (JWT)是一个开放标准(RFC 7519) ,用于作为 JSON 对象在各方之间安全地传输信息,因为它是经过数字签名的,所以此信息可以进行验证和信任,通常用于身份验证和授权。

官网地址:https://jwt.io/

JWT结构:JWT由以点(.)分隔的三个部分组成,分别是HEADER、PAYLOAD、VERIFY SIGNATURE。

HEADER:报头,由Token的类型和所使用的签名算法组成,将由base64进行加密(该加密是可以对称解密的),签名算法可以确保JWT在传输过程中不会被恶意用户所篡改,用于构成 JWT 的第一部分。

PAYLOAD:攻击载荷,其中包含声明,声明是关于实体(通常是用户)和其他数据的语句,声明也会通过base64进行加密,最终形成JWT的第二部分。

有三种类型的声明: registered claims, public claims, and private claims。

VERIFY SIGNATURE:验证签名,使用标头中指定的算法,并对其进行签名。将会通过标头中指定的算法结合secret进行加盐签名(私钥加密),其中header和payload将通过base64UrlEncode()方法进行base64加密然后通过字符串拼接 "." 生成新字符串,最终生成JWT的第三部分。

JWT输出是三个由点分隔的 Base64-URL字符串,这些字符串可以在HTML和HTTP环境中轻松传递,同时与基于XML的标准(如SAML)相比更加紧凑。

JWT攻击

JWT的解析:

真实情况,一般是在请求头里加入Authorization,并加上Bearer标注最后是JWT(格式:Authorization: Bearer <token>)

JWT攻击
02
攻击方式

敏感信息泄露:由于JWT的PAYLOAD部分是Base64编码的,可直接解码查看敏感信息。

算法篡改:HEADER部分中的alg字段可以改为none,当alg字段为空时,后端将不执行签名验证。系统就会从JWT中删除相应的签名数据(这时,JWT就会只含有头部 + ‘.’ + 有效载荷 + ‘.’),然后将其提交给服务器。

暴力破解:破解HS256(对称加密算法)密钥,如果HS256密钥的强度较弱的话,攻击者可以直接通过暴力破解攻击方式来破解密钥。

03
防护措施

使用强签名算法:对称密码密钥长度至少256位,非对称加密密钥长度至少2048位。

密钥管理:定期更换签名密钥,使用硬件安全模块(HSM)或密钥管理服务(KMS)。

监控与响应:实时阻断攻击。

04
真实案例

某云平台漏洞(2020年)

漏洞点:JWT签名密钥硬编码在代码中。

后果:攻击者伪造管理员JWT,删除生产环境所有容器。

05
思考题

某网站使用JWT进行身份验证,但未校验alg字段,如何绕过签名验证?

 

原文始发于微信公众号(小白学安全):网安60秒丨JWT攻击

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年2月17日08:41:51
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   JWT攻击https://cn-sec.com/archives/3748989.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息