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

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

原创 罗锦海 OneMoreThink 2024-03-09 23:33

  1. 原理

  2. 危害

  3. 攻击

  4. 资产发现

  5. 漏洞利用

  6. 防御

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”

查看版本

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

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

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

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

4、防御

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

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

修改默认密钥的位置

配置文件:conf/application.properties

默认密钥:

修改默认密钥的注意事项

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

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