关注公众号回复“漏洞”获取研究环境或工具
SuiteCRM是全球排名第一的开源CRM系统,自最初发布以来已被下载超过 800,000 次。近日官网爆出SuiteCRM存在多个漏洞,其中一处远程命令执行漏洞编号为CVE-2021-45897,影响版本如下:
-
< 7.12.3
-
< 8.0.2
在CentOS上进行程序安装与数据库配置,完成研究环境搭建:
下面给大家简要分析一下漏洞触发原理并复现该漏洞。
SuiteCRM软件支持用户定义邮件模板。补丁修复位于`modulesEmailTemplatesEmailTemplate.php`:
`repaireEntryPointImages`读取`html页面`中解析`<img src=`标签,提取文件后缀`fileExtension`和`id`,随后调用`makePublicImage`函数将`upload`目录文件写入到`public`,且没有对后缀名做检查。提取文件的URL格式为:
/index.php?entryPoint=download&type=Notes&id=UUID&filename=FILENAME
经过身份认证的用户可以通过`/index.php?entryPoint=download&type=Notes&id=<note-id>`链接Notes模块中的附件:
`repaireEntryPointImages`由`retrieve`函数调用,在用户保存和访问电子邮件模板时都会触发该功能:
SuiteCRM允许用户创建邮件模板,并支持添加附件,实际上以uuid的方式存储在本地文件系统:
同时用户可以将任意附件添加到邮件模板,但不能被php解析,但是利用`repaireEntryPointImages`函数,如果邮件正文中包含类似内容如下:
`#<img src='localhost/index.php?entryPoint=download&type=Notes&id=UUID&filename=poc.php#si
`Notes`模块下的附件就可以被复制写入到`public`目录。
总结漏洞利用过程如下:
-
用户通过`Notes`上传webshell;
-
SuiteCRM系统`Notes`模块将webshell以UUID的方式存储在`upload`目录;
-
验证能否通过`/index.php?entryPoint=download&type=Notes&id=<note_id>`下载附件;
-
创建一个电子邮件模板,模板html源码中包含类似于`#<img src=’localhost/index.php?entryPoint=download&type=Notes&id=UUID&filename=poc.php#si`的匹配项;
-
保存或者重新加载邮件模板,SuiteCRM执行`repaireEntryPointImages`将webshell复制到`public`目录;
-
通过`http://***/public/UUID.php`执行命令。
用户登录,进入`Notes`功能上传`Notes`附件,返回ID:
检查附件内容:
进入`Email-Templates`功能,新建邮件模板并篡改`body_html`参数:
保存后重新查看该模板,webshell被写入:
由于传播、利用此文档提供的信息而造成任何直接或间接的后果及损害,均由使用本人负责,且听安全团队及文章作者不为此承担任何责任。
点关注,不迷路!
关注公众号回复“漏洞”获取研究环境或工具
原文始发于微信公众号(且听安全):【最新漏洞预警】CVE-2021-45897 全球最大CRM系统SuiteCRM远程命令执行漏洞分析与复现