简介:
Nacos是一个开源的分布式配置中心、服务发现、动态 DNS 服务和服务网格平台,由阿里巴巴公司开发和维护。它可以帮助开发人员快速构建云原生应用,支持多种语言和框架,能够实现应用的配置管理、服务注册和发现、流量管理、服务治理等功能。Nacos提供了两种部署模式:单机模式和集群模式,可以根据实际需求选择合适的模式。
利用条件:
Nacos 1.x集群模式或Nacos 2.x
开放7848端口
漏洞环境部署:
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
基本原理:
Nacos在处理某些基于Jraft的请求时,采用Hessian进行反序列化,但并未设置限制,导致应用存在远程代码执行漏洞。Nacos 1.x在单机模式下默认不开放7848端口,故该情况通常不受此漏洞影响。然而,2.x版本无论单机或集群模式均默认开放7848端口。
备注:Nacos默认情况下会启动两个端口,一个是8848端口,用于Nacos控制台的访问,另一个就是7848端口。7848端口是Nacos的内部通信端口,用于服务之间的通信和数据同步。当Nacos集群中有新的服务注册或配置信息更新时,这些信息会通过7848端口在集群中同步,保证整个集群的一致性。因此,7848端口对于Nacos的正常运行和集群通信是非常重要的。
漏洞检测:
对Nacos进行版本和部署模式探测:
./nuclei -u http://127.0.0.1:8848/ -t nacos/nacos-jraftserver-deserialization-rce.yaml
nuclei检测poc:
https://github.com/UltimateSec/ultimaste-nuclei-templates/blob/main/nacos/nacos-jraftserver-deserialization-rce.yaml
修复方式:
禁止7848端口来自Nacos集群外的请求达到防护目的
参考:
https://stack.chaitin.com/techblog/detail?id=106
https://github.com/alibaba/nacos/releases
原文始发于微信公众号(极致攻防实验室):Nacos Jraft 远程代码执行漏洞 附检测POC (nuclei)
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论