CVE-2025-45346 – Bacula-Web 基于时间的SQL注入(PostgreSQL版本提取)
📝 概述
漏洞标题: Bacula-Web中的基于时间的盲注SQL注入
产品: Bacula-Web
受影响版本: 确认支持PostgreSQL后端的版本
CVE ID: CVE-2025-45346
严重程度: 高
攻击向量: 远程
影响: 任意SQL执行,信息泄露
🧨 描述
此概念验证(PoC)演示了Bacula-Web的jobfiles
端点中存在基于时间的盲注SQL注入漏洞。
远程攻击者可利用此缺陷,通过触发使用pg_sleep()
函数的故意延迟,从底层PostgreSQL数据库中提取信息——包括数据库版本。
🚀 特性
- 通过时间延迟测试确认SQL注入存在
- 自动逐字符提取PostgreSQL版本
- 使用URL编码的有效载荷以提高精确度
- 在版本提取过程中打印实时进度
📌 使用方法
⚙️ 要求
- Python 3.x
requests
库(pip install requests
)
🔧 配置
编辑脚本并设置:
|
|
替换:
base_url
为您的Bacula-Web目标URLREPLACEME
为有效的Bacula-Web会话cookie
🏃 运行脚本
|
|
🧾 漏洞利用流程
- 发送带有
pg_sleep(2)
的良性SQL有效载荷以验证注入。 - 如果服务器响应耗时约2秒,脚本继续提取版本。
- 它使用
SUBSTRING()
循环遍历PostgreSQL版本字符串中的位置,并逐个字符进行比较。 - 基于延迟的检测识别正确字符。
🔐 影响
- 向远程攻击者暴露敏感数据库信息
- 可能被利用以链接到进一步的基于SQL的利用
- 破坏对备份作业可见性的Web界面的信任
🛡️ 缓解措施
- 在
jobfiles
路由上应用输入验证 - 在后端逻辑中使用参数化查询
- 将Bacula-Web升级到最新的修补版本(一旦可用)
👨💻 发现者
安全研究员 – Kevin Suckiel – 0xsu3ks
通过负责任披露披露的CVE-2025-45346 PoC。
⚠️ 法律声明
此工具仅用于授权测试和研究目的。
作者不对此PoC的任何未经授权使用或滥用负责。