文章目录
- 一、漏洞复现
- 1.1 访问登录口用户名输入nacos密码输入任意值,进行抓包
- 1.2 伪造登录凭证
- 1.3 登录包中新加入一项凭证验证
- 二、漏洞解决
- 2.1 分析原因
- 2.2 解决方案
- 2.3 操作留痕
- 1、先了解nacos部署环境
- 2、查看比对配置文件
- 3、修改配置文件后,重启
一、漏洞复现
报告截取内容如下
1.1 访问登录口用户名输入nacos密码输入任意值,进行抓包
1.2 伪造登录凭证
添加有效登录时间戳
登录信息中
在payload中输入nacos与时间戳
并添加入nacos默认密钥
SecretKey012345678901234567890123456789012345678901234567890123456789
同时选中base64加密
点击生成
1.3 登录包中新加入一项凭证验证
Authorization: Bearer 加上凭证
点击发送发现正确登录返回信息
之后讲登录返回包修改为正确登录信息
发现登录成功
二、漏洞解决
1、更新版本:
https://nacos.io/zh-cn/blog/announcement-token-secret-key.html
缓解措施:
1、检查application.properties文件中token.secret.key属性,若为默认值,可参考:https://nacos.io/zh-cn/docs/v2/guide/user/auth.html进行更改
具体实操留痕如下,主要是公司的nacos是由之前离职的同事部署,具体研究一步看一部
2.1 分析原因
查看上文中的nacos博客文章可以知道,本次绕过身份验证的漏洞原因是:利用token默认值进行撞击,绕过身份验证。在nacos2.2.0.1和1.4.5版本之前的版本中,可能是为了便于开发环境使用,默认开启了一个自带的token默认值,导致上述报告中,可以利用默认的访问秘钥跳过认证,直接登陆。
2.2 解决方案
总结如下
- (旧版本)查看是否使用了默认的
token.secret.key
、nacos.core.auth.server.identity.key
和nacos.core.auth.server.identity.value
,如仍然使用默认值,请参考文档内容尽快进行修改。 - (新版本)根据文档设置
token.secret.key
、nacos.core.auth.server.identity.key
和nacos.core.auth.server.identity.value
,并尽快修改默认密码。 - 这类应用一般应该部署于内部网络环境,因此不建议用户将Nacos暴露在公网环境。
分析解决方案,目前公司的nacos是2.04,采用旧版本解决方案,并且确实部署在内网环境中,没有对公网公开,所以只需要解决第一个方案。
2.3 操作留痕
1、先了解nacos部署环境
-
nacos采用docker部署,使用
docker inspect
指令可以查看到到挂载目录 -
进入挂载目录,修改配置文件后再重启nacos即可。
2、查看比对配置文件
经过比对发现配置如下
关于
${NACOS_AUTH_TOKEN:****}
这样格式写法的含义:
- 当环境变量中存在NACOS_AUTH_TOKEN时,采用环境变量
- 如果不存在NACOS_AUTH_TOKEN时,使用后面的值