Invoice Ninja 是一款流行的开源发票和项目管理平台,它新发现的服务器端请求伪造(SSRF)漏洞可允许攻击者从系统的主机服务器读取敏感文件。Pretera 公司的安全研究员 Arben Shala 发现了这个漏洞(CVE-2024-53353),并详细说明了它对依赖 Invoice Ninja 的用户和组织的潜在影响。
采用 Laravel 构建的 Invoice Ninja 包含一个 PDF 生成功能,攻击者可利用该功能触发 SSRF 漏洞。该漏洞允许具有创建或编辑发票权限的本地用户和低权限客户端门户用户在生成 PDF 时注入恶意有效载荷。一旦被利用,攻击者可以访问关键文件,如"/etc/passwd "文件或".env "配置文件,这些文件通常包含数据库凭据、SMTP凭据和其他敏感信息。
分析报告解释说:"可以访问客户门户网站的客户也可以触发相同的攻击向量,因此他们可以修改个人数据,在为他们生成报价时触发攻击。"
该漏洞存在于 PDF 生成过程中。静态代码分析显示,Invoice Ninja 使用黑名单过滤器来防止潜在危险的 HTML 标记和协议。然而,这种方法有很大的局限性,因为攻击者可以通过情况变化或替代表示绕过过滤器。例如,过滤器的目标是 "file://",但攻击者可以通过 "File://"或类似的变体绕过过滤器。
在主门户场景中,具有 "创建/编辑发票 "权限的攻击者可以在发票描述字段中输入类似 <embed src="File:///etc/passwd"> 的有效负载。这一操作会将敏感文件的内容渲染到生成的 PDF 中。同样,在客户端门户场景中,低权限用户可以利用查看报价时触发的 PDF 生成功能,在其配置文件设置中注入恶意有效载荷。
拥有主门户访问权限的攻击者可以利用发票创建过程中的 "描述 "字段。研究人员演示了在该字段中注入 <embed src="/usr/share/nginx/invoiceninja/.env"> 会呈现".env "文件内容,从而暴露数据库和服务凭据。
低权限用户可通过向可编辑的配置文件字段注入恶意有效载荷来利用此漏洞。该有效载荷会在生成报价的 PDF 时触发,允许攻击者即使使用有限的访问权限也能提取敏感文件。
该漏洞带来了严重的安全风险,尤其是对于 .env 文件包含硬编码凭据的系统。Shala 警告说:"知道应用程序完整路径的攻击者可以使用有效载荷读取关键文件的内容,其中可能包含明文凭据和其他敏感数据。"
要降低 CVE-2024-53353 的风险,Pretera 建议应用 Invoice Ninja 开发团队提供的安全更新。