本帖最后由 xuanyuanzx 于 2024-7-24 19:05 编辑
本人刚来到吾爱破解网站,是一名网络安全领域的IT人。以后会在这里跟大家分享一些经典漏洞的复现以及网络安全的学习情况,和大家相互学习,希望可以一起成长进步。今天给大家分享一下关于nacos的近期爆出来的一个漏洞复现。
一、应用介绍
Nacos(全称为 “Naming and Configuration Service”)是一个开源的分布式服务发现和配置管理平台,由阿里巴巴集团开发并开源。Nacos 提供了服务注册、发现、配置管理、动态 DNS 服务等功能,可帮助开发者构建弹性的、高可用的微服务架构。现有的nacos的资产数量还是较为庞大的,主要登录界面如下:
二、漏洞介绍
本次漏洞需要登录后才能使用,具体原理是 Nacos 的某些接口没有严格的权限控制,攻击者可以通过特制的请求向 Nacos 服务器发送恶意数据,从而执行任意代码。
三、漏洞影响
影响版本:nacos2.3.2-2.4.0
利用条件:
- 需要naocs没有做鉴权,或者能登录后台获取凭证
- 需要使用的是derby数据库,如果是mysql不行
四、搜索语句
fofa语法: icon_hash="13942501"`
`ZoomEye语句:app:"Alibaba Nacos"`
`Hunter语句:app.name="nacos"`
`Quake语句:app="nacos"
五、漏洞复现
1.环境搭建
下载nacos2.3.2——https://github.com/alibaba/nacos/releases/download/2.3.2/nacos-server-2.3.2.zip
解压后进入bin文件夹下,执行:
sh startup.sh -m standalone
本地访问:http://127.0.0.1:8848/nacos/index.html
2.漏洞利用
下载利用脚本:https://github.com/ayoundzw/nacos-poc
打开config.py 修改脚本服务IP和端口,只要不和本地其他冲突就行,默认不用修改:
运行service.py,开启nacos的一个下载服务:
分析:这个代码payload传入的是一个base64编码的字符串,这个编码的字符串被解码为二进制数据,解码后作为jar包对其进行分析,jar使用了一个公共静态方法来接受一个字符串参数(cmd),表示要执行的命令。创建一个StringBuffer对象用于存储命令的输出,并且检查操作系统名称来判断系统使用了那种字符集(UTF-8或GBK)。再使用Runtime.getRuntime().exec(cmd); 执行的命令,返回一个对象, 最后从进程的输入流中获取输出,并使用InputStreamReader和BufferedReader 来逐行读取和解析输出:
运行exploit.py,通过上传恶意SQL脚本并执行Java函数来实现命令执行:
分析:urljoin是Python标准库urllib.parse模块中的一个函数,它用于将两个或多个部分(通常是字符串)组合成一个完整的URL。并且对其中传入的参数分析发现代码是用于执行数据库操作的SQL脚本。
整体利用链:使用exp.py来加载远程的service.py放置的远程jar包,并使用Derby数据库中的执行命令去执行jar包中的命令。
六、修复建议
升级到最新版本,应急:
- 数据库使用mysql即可
- 开启nacos鉴权机制,修改默认token及用户名密码
|