1. HTTP3W博客首页
  2. 建站
  3. 网站优化

Nacos出现重大安全漏洞,线上项目险遭脱库

前言

大家好我是诺米,今天我无意中看到技术交流群里一场比较激烈的讨论,主要是关于 Nacos 中一个绕过安全认证直接获取微服务项目的配置文件的 安全漏洞

dialogImageUrl

漏洞起源

可能有些小伙伴还不太清楚 Nacos 是啥,它是 SpringCloud Alibaba 微服务架构中的一个组件,主要作用是服务注册和发现以及分布式配置管理。 也就是说我们的配置都可以在 Nacos 中存储,里面记录着 MySQLRedis 等数据库的账号密码,如果用户能够进入到 Nacos 中,也相当于我们的数据已经能够被脱库了。

用户发现通过设置请求头:User-Agent: Nacos-Server,就可以绕过Nacos的权限校验,而直接获取到项目的所有配置文件信息,然后题主建议Nacos官方立即对这个问题进行修复。

然后 Nacos 项目的开发者认为,这不是一个 安全漏洞,并且认为通过设置 User-Agent 就相当于开启了白名单,那么就可以忽略鉴权。

dialogImageUrl

开发人员的答复马上就获得了 300 多人的反对意见。认为开发者将 Nacos 默认密码和本次安全漏洞说成是一个问题。

dialogImageUrl

我觉得上面这个回复非常中肯,就拿诺米来说,当我部署完 Nacos 后,我首先第一件事就是修改 Nacos 默认的账号和密码,然后换成一个更加安全的。但是对于忽略鉴权这个机制,我并不知情的,所以其它用户也可以通过非法的后门来获取到我的配置。

漏洞复现

大家在看完这个issue的时候,群里的小伙伴们就拿一个已经上线的博客系统来进行测试。首先介绍一下,这个博客使用的是Nacos版本1.4.0的一个版本。

首先通过 Chrome 浏览器的F12 观察 nacos 请求的 Network,找到了下面这条Nacos配置文件请求接口

http://your_ip:8848/nacos/v1/cs/configs?dataId=&group=&appName=&config_tags=&pageNo=1&pageSize=10&tenant=dev&search=accurate

然后打开 Postman,填写这个 URL,并设置 GET 请求,同时设置 Headers 请求头,加入 User-Agent:Nacos-Server,如下图所示

dialogImageUrl

从上面的请求 URL 中可以看出,在没有设置任何 Token 相关的操作,只填写了一个固定的请求头,然后发送请求一个 HTTP 请求。

嗯… 果然不出所料,这个博客的 Nacos 配置直接就直接被获取到了!!!

dialogImageUrl

其中里面包含了 MySQL 的账号密码,Redis 的账号密码。如果没有对配置文件的用户和密码进行加密处理,那直接显示的就是明文。我们经常为了远程调试方便,就顺便开放了 MySQL 的 3306端口,这样对方就可以通过找到他的 IP地址 和 MySQL 的账号密码,使用 SQLyog 工具,直接入侵了该网站的后台数据库。

dialogImageUrl

如果我们只需要执行 SQL 导出,就可以轻松将该网站数据进行脱库,同时我在 issue 中,也看到有小伙伴通过端口扫描工具,一共搜出来 800 多台暴露了公网的 Nacos 服务器,所以这些服务器无一例外,都有可能被脱库!!

解决方法

后面社区小伙伴们,踊跃的提出了自己的修改意见,最后决定通过增加自定义 Key Value 键值对对来解决,只有通过设置正确的键值对才能获取配置

dialogImageUrl

在今天 Nacos 开发人员已经重视了这个高危安全漏洞,并且紧急的发布了最新的 1.4.1 版本。

dialogImageUrl

我们只需要下载最新版本的 Nacos 1.4.1 ,然后修改对应的 application.properties 文件,修改如下内容

# 开启鉴权
nacos.core.auth.enabled=true
# 关闭白名单功能
nacos.core.auth.enable.userAgentAuthWhite=false.
# 配置键值对 [键值对可以自定义]
nacos.core.auth.server.identity.key=aaa
nacos.core.auth.server.identity.value=bbb

最后我们再次使用刚刚的请求进行测试,发现已经无法获取到配置了

dialogImageUrl

那么我们需要怎么才能获取到配置呢?只需要在 headers 里面,填写刚刚配置文件中的键值对即可

dialogImageUrl

因为键值对是我们自定义的,因此每个人的都是不相同的。到这里 Nacos 的安全漏洞已经算是解决了,最后诺米希望看到本篇文章的小伙伴,如果公司还没有升级最新版的 Nacos,那么强烈建议进行升级!

1、原创文章,作者:诺米,如若转载,请注明出处:https://www.http3w.com/archives/296

2、本站内容若有雷同从属巧合,若侵犯了您的权益,请联系本站删除,E-mail: wtao219@qq.com

发表评论

您的电子邮箱地址不会被公开。

联系我们

254007489

在线咨询:点击这里给我发消息

邮件:wtao219@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息