当前位置: 首页 > news >正文

解决“nacos默认secret.key配置不当权限绕过漏洞“

一、前言

nacos 2.2.0.1以下版本会有一个nacos默认secret.key配置不当权限绕过漏洞,等级为高危。形成原因是nacos的配置文件中存在这么一个secret.key默认配置:

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

会被他人利用进行提权从而达到系统受控的目的。

二、解决

解决这个问题需要对这个key的默认值进行修改,建议不要使用明文,可以用base64,key的长度要32位以上,下面介绍一下在两种环境下的修改方法:

2.1 centos系统

找到nacos的安装目录,假设是在/usr/local/nacos

# 打开配置文件所在目录
cd /usr/local/nacos/conf# 对文件进行编辑
vim application.properties

定位到secret.key所在行,输入斜杠/,然后再输入secret.key,最后回车,如:

/secret.key

然后使用键盘的方向键定位到要修改的值,输入i 进入编辑模式,之后就可以进行修改了。
修改好之后保存,先按Esc键退出编辑模式,最后输入以下命令进行保存:

:wq

保存完之后重启一下nacos即可。

首先打开bin目录,bin目录是conf的同级目录

cd ../bin

先关闭

sh shutdown.sh

再启动,这里使用的是单机模式

sh startup.sh -m standalone
2.2 docker容器
1、在宿主机上修改

docker环境下如果映射了宿主机目录的话,直接在宿主机上修改配置文件重启容器即可。

2、在docker容器里面修改

如果没有映射宿主机的目录,则可以进入docker容器内进行修改。

docker exec -it nacos bash

默认目录是/home/nacos/conf,然后安装centos系统的修改方法进行修改。

3、直接修改启动命令

如果使用默认配置呢,可以在启动命令中增加NACOS_AUTH_TOKEN参数来达到修改目的,这种方式更为简单。
docker环境的nacos默认配置如下

nacos.core.auth.plugin.nacos.token.secret.key=${NACOS_AUTH_TOKEN:SecretKey012345678901234567890123456789012345678901234567890123456789}

rm旧的容器

# 强制停止并删除容器
docker rm -f containerId(容器id)
# containerId(容器id) 可以使用下面的命令查看,第一列就是容器id
docker ps
# 或
docker rm -f nacos

或者使用下面的方式,先停止再移除

# 先停止nacos容器
docker stop nacos
# 再删除nacos容器
docker remove nacos

然后执行下面命令启动docker,本例nacos的版本是v2.1.1

docker run --restart=always -d -p 8849:8848 -p 9848:9848 --name nacos --network bridge --env MODE=standalone --env SPRING_DATASOURCE_PLATFORM=mysql --env MYSQL_SERVICE_HOST=192.168.10.1 --env MYSQL_SERVICE_PORT=3306 --env MYSQL_SERVICE_DB_NAME=nacos --env MYSQL_SERVICE_USER=root --env MYSQL_SERVICE_PASSWORD=root --env NACOS_AUTH_TOKEN=xxx  nacos/nacos-server:v2.1.1

这样就行了

三、总结

对于这个漏洞大家最好都去排查一下,在第一时间去解决。解决的途径有两种,一就是像上述方法一样修改默认值,二是升级nacos的版本,在新版本中上面的配置被弃用,取而代之的是nacos.core.auth.plugin.nacos.token.secret.key,没有默认值,第一次启动之前需要配置否则会报异常,在一定程度上杜绝了旧版本的默认值问题。

http://www.lryc.cn/news/281564.html

相关文章:

  • 一款好用的开源思维导图软件 docker部署教程
  • Jenkins之pipeline
  • 创意交融:集成自定义报表和仪表盘设计器,实现图标替换
  • Mybatis 40_resultMap基础和@Results注解
  • 【蓝桥杯选拔赛真题31】C++数位求和 第十三届蓝桥杯青少年创意编程大赛C++编程选拔赛真题解析
  • 牛客网-css继承属性
  • OpenCV-19图像的仿射变换
  • 数据结构与算法教程,数据结构C语言版教程!(第四部分、字符串,数据结构中的串存储结构)二
  • 第七在线荣获百灵奖 Buylink Awards 2023零售圈年度卓越服务商品牌
  • 通过myBatis将sql语句返回的值自动包装成一个java对象(3)
  • 基于SSM的驾校信息管理系统设计与实现
  • 矩阵行列式的四大应用
  • 【小笔记】时序数据分类算法最新小结
  • 使用Python+pygame实现贪吃蛇小游戏
  • SpringBoot 全局异常统一处理:BindException(绑定异常)
  • ucloud轻量云(wordpress)配置ssl
  • 电脑/设备网络共享给其他设备上网
  • vue之虚拟滚动
  • Redis学习指南(11)-Redis的有序集合数据类型介绍
  • Spring的纯注解配置
  • numpy 筛选多段数据
  • 【Kotlin】协程的字节码原理
  • 区间预测 | Matlab实现LSSVM-ABKDE的最小二乘支持向量机结合自适应带宽核密度估计多变量回归区间预测
  • 基于深度学习的实例分割的Web应用
  • 20240115如何在线识别俄语字幕?
  • Flink 处理函数(1)—— 基本处理函数
  • Linux系统下编译MPlayer
  • 事务的ACID属性是什么?为什么它们很重要?
  • 计算机毕业设计 基于Java的手机销售网站的设计与实现 Java实战项目 附源码+文档+视频讲解
  • Redis相关命令详解及其原理