IPBUF安全漏洞报告
English
CVE-2026-44298 CVSS 4.1 中危

CVE-2026-44298 Kimai任意文件读取漏洞

披露日期: 2026-05-08

漏洞信息

漏洞编号
CVE-2026-44298
漏洞类型
任意文件读取
CVSS评分
4.1 中危
攻击向量
网络 (AV:N)
认证要求
高权限 (PR:H)
用户交互
无需交互 (UI:N)
影响产品
Kimai

相关标签

任意文件读取KimaiLFISSRFPDF注入

漏洞概述

Kimai是一个开源的时间追踪应用。在2.32.0至2.56.0之前的版本中,拥有系统管理员角色及上传发票模板权限的用户,可以利用PDF模板功能读取服务器上的任意文件。该漏洞源于mPDF库处理关联文件时的不当实现,导致敏感信息泄露。CVSS评分4.1,属于中危漏洞。

技术细节

该漏洞存在于Kimai使用mPDF库生成发票的功能中。具有系统管理员角色及上传发票模板权限的攻击者,可以上传包含恶意Twig代码的PDF模板文件。在渲染阶段,系统允许在沙箱内调用`pdfContext.setOption('associated_files', ...)`。该调用会传递给mPDF库的`SetAssociatedFiles()`方法。当PDF写入器执行时,它会调用`file_get_contents($entry['path'])`读取参数中指定的文件路径,并将读取到的字节流以FlateDecode编码方式嵌入到生成的PDF文件中。由于缺乏路径验证,攻击者可借此读取PHP进程权限下的任意敏感文件(如数据库配置、环境变量等),并通过下载生成的发票获取数据。

攻击链分析

STEP 1
权限获取
攻击者获取具有System-Admin角色和upload_invoice_template权限的账户凭据。
STEP 2
上传恶意模板
攻击者构造包含恶意Twig代码的PDF发票模板并上传至服务器。
STEP 3
触发渲染
攻击者请求生成或预览使用该恶意模板的发票。
STEP 4
文件读取
服务器在渲染过程中执行Twig代码,调用mPDF读取指定路径的文件内容。
STEP 5
数据回传
被读取的文件内容被嵌入生成的PDF文件中,攻击者下载PDF并提取内容。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
{# Malicious Twig template for Kimai PDF Invoice #} {# Exploiting CVE-2026-44298 to read /etc/passwd #} <h1>Invoice</h1> <p>Please find the attached invoice details.</p> {# Set the associated file option to point to a sensitive file #} {% set target_file = '/etc/passwd' %} {{ pdfContext.setOption('associated_files', [{'name': 'leak', 'path': target_file}]) }}

影响范围

Kimai >= 2.32.0, < 2.56.0

防御指南

临时缓解措施
如果无法立即升级,请暂时禁用PDF发票模板上传功能,或严格限制只有受信任的核心管理员才能访问该功能,并审查服务器日志以检测异常的PDF生成活动。

参考链接