实验室:JWT身份验证旁路通过KID Header Path Traversal
从业者
该实验室使用基于JWT的机制来处理会话。为了验证签名,服务器使用孩子
参数inJWT从其文件系统中获取相关键的标题。
要解决实验/行政
,然后删除用户卡洛斯
。
您可以使用以下凭据登录到自己的帐户:维纳:彼得
解决方案
笔记
在此解决方案中,我们将指出孩子
标准文件的参数/dev/null
并用一个空字节签名。实际上,您可以指出孩子
具有可预测内容的任何文件的参数。
第1部分 - 生成合适的签名密钥
在Burp中,从BAPP商店加载JWT编辑器扩展程序。
在实验室中,登录到您自己的帐户并发送后期获取 /my-Account
请求打burp burp。
在Burp Repeater中,将路径更改为/行政
并发送请求。观察到只有在登录为行政人员
用户。
去JWT编辑键在Burp的主标签栏中的标签。
点击新的对称键。
在对话框中,单击产生以JWK格式生成新密钥。请注意,您不需要选择一个键大小,因为这将在稍后自动更新。
替换生成的值k
带有基本64编码的null字节的属性(AA ==
)。
点击好的保存密钥。
第2部分 - 修改并签署JWT
回到获取 /管理员
请求Burp Repeater,然后切换到扩展生成JSON网beplay体育能用吗络令牌消息编辑选项卡。
在JWT的标题中,更改孩子
参数到a路径遍历序列指向/dev/null
文件:
../../../../../../../../../../../../dev/null
在JWT有效载荷中,更改子
索赔行政人员
。
在标签的底部,单击符号,然后选择您在上一节中生成的对称键。
确保不要修改标头选择选项,然后单击好的。现在,使用NULL字节作为秘密键签名修改后令牌。
发送请求并观察您已成功访问了管理面板。
在响应中,找到删除Carlos的URL(/admin/delete?用户名= carlos
)。将请求发送到此端点以求解实验室。
社区解决方案beplay维护得多久
Emanuele Picariello