0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

悟空crm漏洞新用概述

工程师邓生 来源:Tide安全团队 作者:mazihan 2022-09-29 10:33 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

概述

悟空软件长期为企业提供企业管理软件(CRM/HRM/OA/ERP等)的研发、实施、营销、咨询、培训、服务于一体的信息化服务。悟空软件以高科技为起点,以技术为核心、以完善的售后服务为后盾,秉承稳固与发展、求实与创新的精神,已为国内外上千家企业提供服务。

听说很厉害,搜索了下存在的旧版本漏洞,看看是否还存在这样的漏洞,旧漏洞如下:

9afb26a2-3f0e-11ed-9e49-dac502259ad0.png


按照已有的方向先排查一波。

安装

下载完包后,解压放到环境的根目录。

访问url

9c04cd78-3f0e-11ed-9e49-dac502259ad0.png


点击同意,进行下一步安装。

9d61b50a-3f0e-11ed-9e49-dac502259ad0.png


安装完成,使用安装过程功的账号密码,登录到工作台。

9d86c278-3f0e-11ed-9e49-dac502259ad0.png

9db5223a-3f0e-11ed-9e49-dac502259ad0.png

sql注入

进入到管理操作区,找到项目管理,在所有请求中有一个myTask请求,

9dfef4e6-3f0e-11ed-9e49-dac502259ad0.png


使用burpsuite抓取到改请求,发送到重放模块,接着修改构建传递的参数,第一个将url部分mytask修改成dateList,将body部分的{"search":"","sort_field":2,"completed_task":true,"owner_user_id":[],"time_type":"","label_id":[]}修改改成{"start_time":"123","stop_time":"12"}此时点击一次go,看是否有正确相应。

9e34722e-3f0e-11ed-9e49-dac502259ad0.png


接着,将请求保存到一个文本中,命名为post.txt。

接着上sqlmap跑一下这个请求包。

9e7d24c4-3f0e-11ed-9e49-dac502259ad0.png

代码分析:

publicfunctiondateList()
{
$param=$this->param;
$taskModel=model('Task');
$userInfo=$this->userInfo;
$param['user_id']=$userInfo['id'];
$data=$taskModel->getDateList($param);
returnresultArray(['data'=>$data]);
}

此方法中的getDateList读取数据库,看方法逻辑:

publicfunctiongetDateList($param)
{
$start_time=$param['start_time'];
$stop_time=$param['stop_time'];
$user_id=$param['user_id'];
//$date_list=dateList($start_time,$stop_time,1);
$where=[];
$where['ishidden']=0;
$where['is_archive']=0;
$where['status']=1;
$where['pid']=0;
$str=','.$user_id.',';
$whereStr='(create_user_id='.$user_id.'or(owner_user_idlike"%'.$str.'%")or(main_user_id='.$user_id.'))';
$whereDate='(stop_time>0andstop_timebetween'.$start_time.'and'.$stop_time.')or(update_timebetween'.$start_time.'and'.$stop_time.')';
$list=db('task')
->where($where)
->where($whereStr)
->where($whereDate)
->field('task_id,name,priority,start_time,stop_time,priority,update_time')
->select();
return$list?:[];
}

再此方法中接受的参数有start_time、stop_time、user_id三个参数,其实这三个参数都没有加过滤,直接字符串拼接。所以都存在SQL注入点,只不过sqlmap在start_time的时候,就跑出结果了,后面不验证罢了。

需要提醒的是,再最新版本中,这个url需要构造出来,而不是点解控制台中哪个url。项目方把这个功能模块去掉了,但是代码并没有删除。简单验证如下图:

9ea1da26-3f0e-11ed-9e49-dac502259ad0.png


所以,前台的vue打包程序中,没有这个路由了。只能通过后期的构建,才能复现出这个漏洞。

任意文件上传

在平台所有文件上传点上,选取上传用户图像的功能点。

9f2c4ba2-3f0e-11ed-9e49-dac502259ad0.png


使用burpsuite抓包,如下:

9f4f7db6-3f0e-11ed-9e49-dac502259ad0.png

将用户名和图片内容分别替换成php后缀的文件,和PHP代码如:此时返回的数据是错误的,不过没关系,文件已经生成了。如下图所示:

9f9bd0ee-3f0e-11ed-9e49-dac502259ad0.png


尝试了很多次,生的文件比较多。此时从浏览器上访问任意一个文件路径,效果如下:

9ffc8394-3f0e-11ed-9e49-dac502259ad0.png


当写入一句话的时候,也是可以用蚁剑连接的。

a0acab8e-3f0e-11ed-9e49-dac502259ad0.png

a1a49542-3f0e-11ed-9e49-dac502259ad0.png

a245e5c8-3f0e-11ed-9e49-dac502259ad0.png

a34ea68a-3f0e-11ed-9e49-dac502259ad0.png


代码分析:通过抓包,访问的url/index.php/admin/users/updateImg可以看到该方法如下:

publicfunctionupdateImg()
{
$fileModel=model('File');
$param=$this->param;
$userInfo=$this->userInfo;
//处理图片
header('Access-Control-Allow-Origin:*');
header('Access-Control-Allow-Methods:POST');
header("Access-Control-Allow-Headers:Origin,X-Requested-With,Content-Type,Accept");
$param['file']=request()->file('file');

$resImg=$fileModel->updateByField($param['file'],'User',$param['id'],'img','thumb_img',150,150);
if(!$resImg){
returnresultArray(['error'=>$fileModel->getError()]);
}
returnresultArray(['data'=>'上传成功']);
}

在方法里,有个updateByField的方法,这个是上传文件的调用,方法体如下:

publicfunctionupdateByField($file,$module,$module_id,$field,$thumb_field='',$x='150',$y='150')
{
if(empty($module)||empty($module_id)||empty($field)){
$this->error='参数错误';
returnfalse;
}

$info=$file->move(FILE_PATH.'public'.DS.'uploads');//验证规则
$fileInfo=$info->getInfo();//附件数据

在这个方法中,有个文件管理类file,其中的move方法做了文件的上传操作,如下:

publicfunctionmove($path,$savename=true,$replace=true)
{
//文件上传失败,捕获错误代码
if(!empty($this->info['error'])){
$this->error($this->info['error']);
returnfalse;
}

//检测合法性
if(!$this->isValid()){
$this->error='uploadillegalfiles';
returnfalse;
}

//验证上传
if(!$this->check()){
returnfalse;
}

$path=rtrim($path,DS).DS;
//文件保存命名规则
$saveName=$this->buildSaveName($savename);
$filename=$path.$saveName;

//检测目录
if(false===$this->checkPath(dirname($filename))){
returnfalse;
}

//不覆盖同名文件
if(!$replace&&is_file($filename)){
$this->error=['hasthesamefilename:{:filename}',['filename'=>$filename]];
returnfalse;
}

/*移动文件*/
if($this->isTest){
rename($this->filename,$filename);
}elseif(!move_uploaded_file($this->filename,$filename)){
$this->error='uploadwriteerror';
returnfalse;
}

//返回File对象实例
$file=newself($filename);
$file->setSaveName($saveName)->setUploadInfo($this->info);

return$file;
}

到此,方法体中的move_uploaded_file算是保存完了构建的PHP文件,需要注意的是,这里的命名规则,代码里用了时间的随机数,

switch($this->rule){
case'date':
$savename=date('Ymd').DS.md5(microtime(true));
break;

也就是说,前端可以猜到具体的文件夹,但是具体的文件名,需要后期做个碰撞的脚本,才可以获取到。因为是白盒审计,这一步就暂时省略掉了。

总结

老版本种存在的问题,最新版本也是存在的,只不过需要后期数据的加工,没有之前版本来的那么容易。所以做程序要用心,做安全更是如此。



审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • SQL
    SQL
    +关注

    关注

    1

    文章

    809

    浏览量

    47037
  • CRM
    CRM
    +关注

    关注

    1

    文章

    154

    浏览量

    22200
  • 数据库
    +关注

    关注

    7

    文章

    4094

    浏览量

    68691
  • HRM
    HRM
    +关注

    关注

    0

    文章

    10

    浏览量

    9404

原文标题:悟空crm漏洞新用

文章出处:【微信号:Tide安全团队,微信公众号:Tide安全团队】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    神笔AI×悟空达成合作!首发4大电商AI技能,上线钉钉AI能力广场

    近日,神笔 AI 宣布与悟空达成正式合作,成为悟空首个电商AI生态伙伴。由神笔AI提供的4大核心电商AI技能已在钉钉AI能力广场(悟空技能中心) 首发上线,面向天猫、抖音、京东、小红书等全平台电商
    的头像 发表于 04-07 15:51 275次阅读
    神笔AI×<b class='flag-5'>悟空</b>达成合作!首发4大电商AI技能,上线钉钉AI能力广场

    行业观察 | 微软3月修复83个漏洞,多个高危漏洞被标记为高概率被利用

    2026年3月微软“补丁星期二”正式推送,本次共发布了83个微软安全补丁,并重新发布了10个非微软漏洞公告。此次更新覆盖范围广泛,涉及Windows核心基础设施、身份目录服务、Office协作平台
    的头像 发表于 03-17 17:02 1334次阅读
    行业观察 | 微软3月修复83个<b class='flag-5'>漏洞</b>,多个高危<b class='flag-5'>漏洞</b>被标记为高概率被利用

    curl中的TFTP实现:整数下溢导致堆内存越界读取漏洞

    漏洞概述 在 curl 的 TFTP 协议实现中发现了一个漏洞,该漏洞可能导致 curl 或使用 libcurl 的应用程序在特定条件下,向恶意的 TFTP 服务器发送超出已分配内存块
    发表于 02-19 13:55

    海康威视通过漏洞管理体系认证

    近日,杭州海康威视数字技术股份有限公司(以下简称“海康威视”)成功通过全球权威标准机构BSI的ISO/IEC 29147:2018漏洞披露与ISO/IEC 30111:2019漏洞管理标准认证。这标志着海康威视在漏洞管理方面的工
    的头像 发表于 01-29 17:19 1552次阅读

    什么是零日漏洞?攻防赛跑中的“时间战”

    在软件安全领域,零日漏洞始终是最高级别的威胁之一。“零日”意味着漏洞在被公开之前就已经被攻击者发现并利用。一旦曝光,攻击者往往在数小时内便会发动袭击。在这场和黑客“抢时间”的对抗中,IT团队必须
    的头像 发表于 01-07 16:59 947次阅读
    什么是零日<b class='flag-5'>漏洞</b>?攻防赛跑中的“时间战”

    UPS不间断电源:守护企业核心业务(ERP/CRM)不中断的终极指南

    摘要:当电力闪断,您企业的ERP系统会瘫痪吗?CRM数据会丢失吗?生产流程会戛然而止吗?UPS不间断电源是企业核心业务系统的“数字心脏起搏器”。本文将深度解析UPS如何保障ERP、CRM等关键系统永
    的头像 发表于 12-30 10:34 2092次阅读
    UPS不间断电源:守护企业核心业务(ERP/<b class='flag-5'>CRM</b>)不中断的终极指南

    探索BOURNS CRM - Q汽车级高功率贴片电阻:特性与应用全解析

    推出的CRM - Q汽车级高功率贴片电阻,看看它在实际应用中究竟有哪些独特之处。 文件下载: Bourns CRM-Q车用大功率片式电阻器.pdf 一、产品概述 BOURNS CRM
    的头像 发表于 12-23 15:45 447次阅读

    分析嵌入式软件代码的漏洞-代码注入

    随着互联网的发展,嵌入式设备正分布在一个充满可以被攻击者利用的源代码级安全漏洞的环境中。 因此,嵌入式软件开发人员应该了解不同类型的安全漏洞——特别是代码注入。 术语“代码注入”意味着对程序的常规
    发表于 12-22 12:53

    CS6010带二次过压保护,支持CrM/DCM多模式功率因数校正(PFC)控制器

    CS6010带二次过压保护,支持CrM/DCM多模式功率因数校正(PFC)控制器
    的头像 发表于 10-25 17:10 1177次阅读
    CS6010带二次过压保护,支持<b class='flag-5'>CrM</b>/DCM多模式功率因数校正(PFC)控制器

    兆芯加入基础软硬件产品漏洞生态联盟

    近日,CCS 2025成都网络安全技术交流系列活动——国家漏洞库(CNNVD)基础软硬件产品漏洞治理生态大会在成都成功举办。来自国家关键基础设施单位、基础软硬件企业、高校科研机构的数百名代表齐聚一堂,共商网络安全发展大计。
    的头像 发表于 09-22 13:50 1089次阅读

    行业观察 | 微软发布高危漏洞更新,涉及 Windows、Office、SQL Server 等多款产品

    微软于2025年9月的“补丁星期二”发布了81个漏洞的修复更新,覆盖Windows、MicrosoftOffice、SQLServer等核心产品。本次更新修复了2个已被公开披露的零日漏洞,并有9个
    的头像 发表于 09-12 17:05 4702次阅读
    行业观察 | 微软发布高危<b class='flag-5'>漏洞</b>更新,涉及 Windows、Office、SQL Server 等多款产品

    行业观察 | Azure、RDP、NTLM 均现高危漏洞,微软发布2025年8月安全更新

    微软2025年8月的“补丁星期二”发布了针对Windows、Office、SQLServer、Exchange、Azure等产品的107个漏洞的修复更新。本月更新包含:✦1个已公开披露的零日漏洞
    的头像 发表于 08-25 17:48 2585次阅读
    行业观察 | Azure、RDP、NTLM 均现高危<b class='flag-5'>漏洞</b>,微软发布2025年8月安全更新

    科技云报到:热链路革命:阿卡 CRM 的 GTM 定位突围

    科技云报道原创。 在企业数字化的工具箱里,“CRM” 一词早已不是 “全流程客户管理” 的代名词,而是从营销获客到客户信息沉淀,再到长期关系维护,仿佛要包揽从线索到复购的所有环节。 但成立仅两年
    的头像 发表于 08-07 17:45 1113次阅读

    新一代神经拟态类脑计算机“悟空”发布,神经元数量超20亿

    电子发烧友网综合报道 8月2日,浙江大学脑机智能全国重点实验室发布新一代神经拟态类脑计算机——Darwin Monkey(中文名“悟空”)。   “悟空”堪称国际首台神经元规模超20亿、基于专用神经
    的头像 发表于 08-06 07:57 7986次阅读
    新一代神经拟态类脑计算机“<b class='flag-5'>悟空</b>”发布,神经元数量超20亿

    有屏幕就能玩《黑神话:悟空》:“无影”的黑科技

    中国首款3A游戏《黑神话:悟空》横空出世,精美宏伟的视觉奇观、流畅的操作体验在全球掀起热潮。不过高配置的电脑要求、100多G的安装包、冗长的解压时间(有人调侃解压都要花500年),让不少玩家望而却步
    的头像 发表于 06-24 10:16 847次阅读
    有屏幕就能玩《黑神话:<b class='flag-5'>悟空</b>》:“无影”的黑科技