Bacula-Web中的SQL注入漏洞CVE-2025-45346
Bacula-Web是开源备份监控工具,使用PHP作为主要编程语言,结合Twig模板引擎,提供强大Web界面用于监控和管理 Bacula 备份系统。
Bacula-Web提供关于 Bacula 备份基础设施的丰富的报告和信息,用户可以轻松地监视备份作业的状态、使用的卷、每周备份统计等信息。
一、基本情况
Bacula-Web是个PHP Web应用程序,提供查看已经运行的Bacula备份作业的摘要和图形的简便方法,简化了数据备份与恢复的流程管理。
Bacula-Web备份管理系统前端界面与 Bacula 或Bacula Enterprise后端配合,提供了直观图形界面管理和监控备份、存储设备、客户端等。
栋科技漏洞库关注到Bacula-Web低于v9.7.1的版本中存在一个SQL注入漏洞,该漏洞现已被追踪为CVE-2025-45346,漏洞CVSS评分8.1。
二、漏洞分析
CVE-2025-45346漏洞是备份监控工具版本低于v9.7.1系统存在的SQL注入漏洞,允许远程攻击者通过特制HTTP GET请求执行任意代码。
该漏洞允许远程攻击者通过精心构建的HTTP GET请求请求执行任意代码,从而注入恶意SQL代码,该漏洞位于所有版本在 v9.7.1 之前。
攻击者可利用CVE-2025-45346漏洞执行任意 SQL 命令,可能导致数据泄露、篡改或远程代码执行。
漏洞代码如下:
application/Table/JobFileTable.php
Lines changed: 4 additions & 2 deletions
Original file line number Diff line number Diff line change
@@ -61,7 +61,8 @@ public function getJobFiles($jobId, $limit, $offset, string $filename = '')
$fields = array('Job.Name', 'Job.JobStatus', 'File.FileIndex', 'Path.Path', 'Filename.Name AS Filename');
$where = array("File.JobId = $jobId");
if (! empty($filename)) {
$where[] = "(Filename.Name LIKE '%$filename%' OR Path.Path LIKE '%$filename%' OR concat(Path.Path, '', Filename.Name) = '$filename')";
$this->addParameter('filename', '%'.$filename.'%');
$where[] = "(Filename.Name LIKE :filename OR Path.Path LIKE :filename OR concat(Path.Path, '', Filename.Name) = :filename)";
}
$orderby = 'File.FileIndex ASC';
@@ -84,7 +85,8 @@ public function getJobFiles($jobId, $limit, $offset, string $filename = '')
$where = ["File.JobId = $jobId"];
if (!empty($filename)) {
$where[] = "(File.Filename LIKE '%$filename%' OR Path.Path LIKE '%$filename%' OR concat(Path.Path, '', File.Filename) = '$filename')";
$this->addParameter('filename', '%'.$filename.'%');
$where[] = "(File.Filename LIKE :filename OR Path.Path LIKE :filename OR concat(Path.Path, '', File.Filename) = :filename)";
}
$orderby = 'File.FileIndex ASC';
三、影响范围
Bacula-Web <= v9.7.1
四、修复建议
Bacula-Web > v9.7.1
五、参考链接
