1. 漏洞概述
2020年12月29日,Nacos官⽅在github发布的issue中披露Alibaba Nacos 存在⼀个由于不当处理User-Agent导致的未授权访问漏洞 。通过该漏洞,攻击者可以进⾏任意操作,包括创建新⽤户并进⾏登录后操作。
2. 影响版本
Nacos <= 2.0.0-ALPHA.1
3. 环境搭建
Nacos下载地址(github):
|
|
Windows搭建:
- 进入github下载地址后下载版本:
|
|
- 解压出来后进入bin目录:
|
|
- 输入在当前文件夹下使用打开cmd窗口,输入命令:
|
|
- 然后访问网站:
|
|
5. 默认账号密码
|
|
即可。
4. 漏洞复现
- 漏洞路径
|
|
2. 虽然有password了, 但是是加盐过的,解密不了,从上图可以发现,⽬前有⼀个⽤户nacos 漏洞利⽤,访问
|
|
PSOT传参:
|
|
UA 头:
|
|
发送POST请求,返回码200,创建⽤户成功~!
返回Nacos登录界面:
使用账号/密码:
|
|
关闭环境:
|
|
5. 漏洞分析
Nacos-Server是⽤来进⾏服务间的通信的⽩名单。⽐如服务A要访问服务B,如何知道服务A是服务,只需要在服务A访问服务B的时候UA上写成 Nacos-Server 即可。
正因为这样,所以当我们UA恶意改为Nacos-Server的时候,就会被误以为是服务间的通信,因此在⽩名单当中,绕过的认证。
这⾥⽤的是nacos-2.0.0-ALPHA.1的代码进⾏分析
关键代码在该⽂件下:
|
|
TrafficReviseFilter继承了Filter⽤来处理请求,⽽⾥⾯的doFilter的就很明确了。注释中写道,当接收到其他节点服务的请求时应该被通过,如何验证是其他服务。
就是很简单的⼀个对于UA的⼀个判断逻辑
这个Constants.NACOS_SERVER_HEADER跟踪⼀下,正是Nacos-Server 经过这⼀层的验证,那么则进⼊到filterChain 过滤器链中的下⼀个filter过滤器,继续接下来的请求。
6. 漏洞修复
若业务环境允许,使⽤⽩名单限制相关web项⽬的访问来降低⻛险。 官⽅已发布最新安全版本,请及时下载升级⾄安全版本。