报告截取内容如下
添加有效登录时间戳
登录信息中
在payload中输入nacos与时间戳
并添加入nacos默认密钥
SecretKey012345678901234567890123456789012345678901234567890123456789
同时选中base64加密
点击生成
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是由之前离职的同事部署,具体研究一步看一部
查看上文中的nacos博客文章可以知道,本次绕过身份验证的漏洞原因是:利用token默认值进行撞击,绕过身份验证。在nacos2.2.0.1和1.4.5版本之前的版本中,可能是为了便于开发环境使用,默认开启了一个自带的token默认值,导致上述报告中,可以利用默认的访问秘钥跳过认证,直接登陆。
总结如下
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是2.04,采用旧版本解决方案,并且确实部署在内网环境中,没有对公网公开,所以只需要解决第一个方案。
nacos采用docker部署,使用docker inspect
指令可以查看到到挂载目录
进入挂载目录,修改配置文件后再重启nacos即可。
经过比对发现配置如下
关于
${NACOS_AUTH_TOKEN:****}
这样格式写法的含义:
- 当环境变量中存在NACOS_AUTH_TOKEN时,采用环境变量
- 如果不存在NACOS_AUTH_TOKEN时,使用后面的值