微信公众号:PersistentCoder 关注可了解更多的教程。
📢 提示: 靶场来自个人云服务器,真实网络环境渗透测试请严格遵守《中国网络信息安全法》,请勿轻易用于他人线上网络环境安全测试,本人不承担任何法律责任。

低版本nacos-server在默认配置下未对token.secret.key进行修改,导致攻击者可以绕过账密认证进入后台造成配置泄露和系统受控等后果。
漏洞类型: 身份认证绕过
等级: 高危
漏洞编号: QVD-2023-6271
受影响版本: Nacos <= 2.2.0
Nacos是一个易于使用的平台,专为动态服务发现和配置以及服务管理而设计。可以帮助您轻松构建云原生应用程序和微服务平台。
目前Nacos 身份认证绕过漏洞(QVD-2023-6271),开源服务管理平台Nacos在默认配置下未对 token.secret.key 进行修改,导致远程攻击者可以绕过密钥认证进入后台,造成系统受控等后果。
Nacos <= 2.2.0基本上都受到了影响,最新的版本已修复漏洞。
JWT(JSON Web Token)是一种用于在网络应用之间安全传递信息的开放标准。在使用JWT时,通常需要使用密钥对token进行签名,以确保token在传输过程中不被篡改。如果在代码中将密钥硬编码到应用程序中,将会存在JWT硬编码漏洞。
JWT硬编码漏洞是指将密钥硬编码到应用程序代码中,而不是存储在安全的密钥存储库中,攻击者可以轻松地获取该密钥并使用其签署和验证JWT。这使攻击者可以创建或修改JWT,或者验证伪造的JWT,从而导致安全漏洞。例如,应用程序使用硬编码密钥对JWT进行签名,攻击者可以轻松获取该密钥并创建有效的JWT,该JWT会被误认为是经过身份验证的用户,从而获得未经授权的访问权限。因此,为了避免JWT硬编码漏洞,应该将密钥存储在安全的密钥存储库中,并且只有授权的应用程序可以访问它。
下载低版本nacos安装包
wget https://github.com/alibaba/nacos/releases/download/2.0.3/nacos-server-2.0.3.zip
unzip nacos-server-2.0.3.zip然后初始化和数据库并修改配置:

然后启动服务:
sh startup.sh -m standalone通过日志和端口号监听看到服务已经启动:

然后通过浏览器可以正常访问,说明服务已经启动成功:

使用漏洞利用工具对nacos服务进行扫描:

可以扫出来当前版本存在secretKey默认配置绕过账密登录漏洞。
使用BurpSuite神器开启拦截,并打开内置浏览器(使用其他浏览器可通过插件自行配置):

然后在内置浏览器输入nacos登录地址:

随便输入错误的账密登录,BurpSuite拦截到请求:

然后这里稍做停顿,低版本的默认token是:
nacos.core.auth.default.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789那么使用jwt在线工具生成新的加密jwt:

回到BurpSuite拦截的请求,修改请求头添加header内容:
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.xxxxxxxxxx.s-9tcc8XgFxaj8_u40LrYKVf80zcZxP7UfgCQOny1Dk
然后跳过后续拦截,回到内置浏览器看到已经绕过登录并进入了nacos配置页面:

然而我们输入的账密是错误的,通过默认secretKey绕过了账密登录进入了系统后台,并且从BurpSuite拦截的请求响应中看到了正常的accessToken返回:

使用这个accessToken可以进行后续一系列的写操作,比如添加账号和修改密码等。
而对于nacos使用者来说,一般会把应用的核心配置都托管给nacos管理,包括数据库连接账密、redis密码、以及其他敏感的业务配置等,通过此漏洞这些配置全都暴露无疑,有心者可以根据拿到的配置尝试攻破数据库、redis以及可以拿到一些敏感配置做离线业务尝试,可谓是底裤都被扒干净了。

可关注官方漏洞公布内容和影响版本,把nacos-server升级到安全版本,如果有条件直接升级到最新稳定版本。
修改配置文件,把默认secretKey改掉。
对于1.4及以下版本,secretKey写死到了代码中,无法修改,想要保住底裤,只能升级nacos。
对于中小型项目、单点部署的项目、不需要热更新配置的项目,是不是可以考虑不用Nacos类似的配置中心呢,引入配置中心某种程度会增加项目复杂度,另外由于开源项目基本都有安全漏洞、正在被发现漏洞,或者被发现未被公开POC的漏洞,也会对业务服务本身带来额外的安全风险。
某些场景是不是可以结合多环境配置以及配置文件外置,来解决配置统一管理和修改配置不重新打包问题。
https://nacos.io/docs/latest/quickstart/quick-start/
https://github.com/alibaba/nacos
https://github.com/alibaba/nacos/issues/7182
https://www.gov.cn/xinwen/2016-11/07/content_5129723.htm
本文分享自 PersistentCoder 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!