Invoice Ninja发现严重SSRF漏洞CVE-2024-53353
Invoice Ninja是一个免费且开源的在线发票管理系统,由开发者Hillel Coren创建并维护,使用 Laravel 框架,这是基于 PHP 的开发框架。
Invoice Ninja使用Laravel框架(基于PHP)和Vue.js(前端)构建,该项目使用MySQL或PostgreSQL作为数据库,能够处理大量的数据。
一、基本情况
Invoice Ninja平台采用现代Web技术构建,旨在为小企业和自由职业者提供一个强大、易用且灵活工具,用于轻松管理和发送专业发票。
栋科技漏洞库关注到流行的开源发票和项目管理平台Invoice Ninja存在严重服务器端请求伪造(SSRF)漏洞,编号为CVE-2024-53353。
二、漏洞分析
CVE-2024-53353是开源发票和项目管理平台Invoice Ninja中存在的严重的服务器端请求伪造(SSRF)漏洞,允许攻击者读取敏感文件。
该漏洞由Pretera的安全研究员Arben Shala发现,允许攻击者读取系统主机服务器的敏感文件,给依赖该平台的用户和组织带来重大风险。
该漏洞存在于PDF生成过程中,具体而言,Invoice Ninja使用 Laravel 构建,因而采用 Laravel 构建的 Invoice Ninja 包含了PDF生成功能。
针对该平台的静态代码分析显示,Invoice Ninja使用黑名单过滤器来防止潜在危险的HTML标签和协议,但显然这一方法存在显著局限性。
攻击者可以通过大小写变体或其他表示方式来绕过这种过滤方式,例如,过滤器针对“file://”,但攻击者可使用“File://”等变体来进行规避。
在主门户场景中,拥有“创建/编辑发票”权限的攻击者可在发票的描述字段中输入负载,比如<embed src="File:///etc/passwd">这段代码,
如此就能将敏感文件内容渲染到生成的PDF中,低权限用户也可通过在个人资料设置中注入恶意负载,利用查看报价时触发的PDF生成。
该漏洞允许在生成PDF时注入恶意负载时访问“/etc/passwd”或“.env”配置文件等关键文件,这些文件通常包含数据库凭证和其他敏感信息。
三、影响范围
Invoice Ninja < 5.117
四、修复建议
Invoice Ninja >= 5.117
五、参考链接