厂商 | |
产品 | Dolibarr |
受影响的版本 | 11.0.4及之前版本 |
测试版本 | 11.0.4 |
漏洞发现日期 | 2020-6-16 |
厂商通知日期 | 2020-6-16 |
预警公告日期 | 无【无技术细节】 |
厂商确认日期 | 无 |
厂商修复日期 | 11.0.5 |
公开披露日期 | 2020-9-25 |
最新修正日期 | 2020-9-25 |
CVE ID | CVE-2020-14209 |
产品描述 | Dolibarr ERP / CRM是一个开源的免费软件包,适用于中小型企业,基金会或自由职业者。它包括企业资源规划(ERP)和客户关系管理(CRM)的不同功能,还包括不同活动的其他功能。 |
发现者 | Andrea Gonzalez, 安全研究员和渗透测试员 @wizlynx group |
漏洞描述
任意上传危险文件漏洞 | |||
严重程度: 高 | CVSS 分数: 8.8 | CWE-ID: CWE-434 | 状态: 未修复 |
漏洞详情 | |||
Dolibarr 11.0.4及更早版本允许低权限用户上传危险类型的文件,这可能导致在脆弱的应用程序中执行任意代码。 | |||
CVSS基准分 | |||
攻击媒介 | 网络 | 范围 | 变化 |
攻击复杂度 | 低 | 保密性影响 | 高 |
所需特权 | 低 | 一致性影响 | 高 |
用户互动 | 无 | 可用性影响 | 高 |
POC
经过身份验证的用户可以上传包含代码的文件,并在服务器端执行这些操作,因为黑名单用于检测和重命名带有危险文件扩展名的文件,但是黑名单不包括在Apache中使用默认配置时被解释为代码的通用扩展名。
已经开发和测试了两种开发方法:
文件扩展名黑名单绕过 htaccess文件上传
该方法已使用没有任何权限的用户进行了测试:
每种方法的详细信息如下:
绕过黑名单的文件扩展名
要求:
上传文件的目录必须位于Web服务器的文档根目录内,且没有访问限制。
Web服务器必须能够执行未列入黑名单的文件(这是Apache的默认配置)。
测试环境: 使用默认配置运行Apache 2.4.25的Debian 9.12。
Dolibarr版本11.0.4。
上传文件时,文件扩展名黑名单用于确定文件是否有可执行代码,在这种情况下,文件名将附加“ .noexe”扩展名。在9.0.4版本之前,与最新版本相比,黑名单更为宽松。最新版本11.0.4使用函数isAFileWithExecutableContent来评估文件名是否具有危险的扩展名。
下图显示了Dolibarr 11.0.4版中fie /htdocs/core/lib/functions.lib.php的内容
正确显示允许使用“ .pht”,“。phar”和“ .shtml”之类的扩展名,Apache 2.4.25的默认配置将“ .pht”文件作为PHP脚本执行:
同样,Apache 2.4.41默认执行“ .pahr”文件:
如下所示,不允许用户在用户个人资料的“链接文件”部分上传文件。
但是,以下请求可以绕过文件上传限制(此漏洞也已报告给Dolibarr,称为“垂直特权升级– WLX-2020-011 ”)。正在上传文件“ 0wkenzqk.pht”,其中包含一个PHP Webshell:
该文件已成功上传,并且其扩展名未修改:
上传的文件默认存储在/ documents / users / <user_id> /目录中,可以如下所示执行webshell:
htaccess文件上传
要求:
上传文件的目录必须在Web服务器的文档根目录中。
Web服务器必须是启用了htaccess的Apache。
测试环境:
Debian 9.12在启用htaccess的情况下运行Apache / 2.4.25。
Dolibarr版本11.0.4。
如先前方法中所示,将上传一个PHP文件,该文件将附加“ .noexe”扩展名:
可以上传htaccess文件,以授予对用户文件上传目录的访问权限,并使扩展名为“ .noexe”的文件可执行为PHP文件。以下屏幕截图显示了正在上传的htaccess文件,请注意文件名是“ htaccess”,该应用程序不允许以点(。)开头的文件被上传。
以下屏幕截图显示了上传htaccess文件的请求。
htaccess文件需要重命名为“ .htaccess”,这可以利用文件重命名功能来完成:
用户上传的以“ .noexe”结尾的任何文件现在都可以执行: