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

    文章

    789

    浏览量

    46371
  • CRM
    CRM
    +关注

    关注

    1

    文章

    151

    浏览量

    21800
  • 数据库
    +关注

    关注

    7

    文章

    3993

    浏览量

    67738
  • HRM
    HRM
    +关注

    关注

    0

    文章

    10

    浏览量

    9222

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

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

    微软于2025年9月的“补丁星期二”发布了81个漏洞的修复更新,覆盖Windows、MicrosoftOffice、SQLServer等核心产品。本次更新修复了2个已被公开披露的零日漏洞,并有9个
    的头像 发表于 09-12 17:05 2164次阅读
    行业观察 | 微软发布高危<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 2065次阅读
    行业观察 | Azure、RDP、NTLM 均现高危<b class='flag-5'>漏洞</b>,微软发布2025年8月安全更新

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

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

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

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

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

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

    提升客户满意度30%:APS计划排产软件如何赋能CRM需求管理?

    安达发APS生产计划排产软件是一种先进的生产计划和排程工具,它通过优化生产资源的配置,提高生产效率,降低生产成本。在CRM客户需求管理方面,安达发APS计划排单软件也发挥着重要作用
    的头像 发表于 04-29 11:09 429次阅读

    销售易在腾讯云城市峰会上发布中国首款AI CRM

    3月19日,腾讯旗下CRM销售易亮相腾讯云城市峰会上海站,以“智能加持,增长无忧”为主题承办AI+CRM分论坛,腾讯副总裁、腾讯政企业务总裁、销售易董事长李强,销售易创始人兼CEO史彦泽出席,与来自
    的头像 发表于 03-24 11:16 565次阅读

    如何利用iptables修复安全漏洞

    随着网络安全威胁的不断增加,安全中心扫描越来越频繁。尤其是在大数据安全中心的漏洞报告中,许多漏洞在生产环境中无法通过服务升级来修复。
    的头像 发表于 03-18 18:02 874次阅读

    微软Outlook曝高危安全漏洞

    近日,美国网络安全和基础设施安全局(CISA)发布了一项紧急安全公告,揭示了微软Outlook中存在的一个高危远程代码执行漏洞(CVE-2024-21413)。该漏洞的严重性不容忽视,已成为恶意网络
    的头像 发表于 02-10 09:17 822次阅读

    AMD与谷歌披露关键微码漏洞

    近日,AMD与谷歌联合公开披露了一个在2024年9月发现的关键微码漏洞,该漏洞主要存在于AMD的Zen 1至Zen 4系列CPU中,特别是针对服务器/企业级平台的EPYC CPU。 这一漏洞被编号
    的头像 发表于 02-08 14:28 801次阅读

    华为云服务器 Flexus X 搭建悟空 crm 管理系统——助力企业云上管理(解决 APP Referer 校验失败问题)

    1、为什么我们企业会选择 Flexus 云服务器 X 实例来部署自己的 CRM 管理系统? 因为基于华为云 Flexus X 实例搭建 CRM 管理平台,可以从容面对企业内部瞬息万变的业务压力变化
    的头像 发表于 02-06 15:43 872次阅读
    华为云服务器 Flexus X 搭建<b class='flag-5'>悟空</b> <b class='flag-5'>crm</b> 管理系统——助力企业云上管理(解决 APP Referer 校验失败问题)

    华为荣获BSI全球首批漏洞管理体系认证

    近日,华为宣布成功获得国际领先的标准、测试及认证机构英国标准协会(BSI)颁发的全球首批漏洞管理体系认证证书。这一殊荣标志着华为在漏洞管理方面达到了国际领先水平,其卓越的漏洞管理及实践得到了权威认可
    的头像 发表于 01-22 13:42 855次阅读

    华为通过BSI全球首批漏洞管理体系认证

    近日,华为通过全球权威标准机构BSI漏洞管理体系认证,涵盖了ISO/IEC 27001信息安全管理、ISO/IEC 29147漏洞披露及ISO/IEC 30111漏洞处理流程三大国际标准。华为凭借其
    的头像 发表于 01-16 11:15 1021次阅读
    华为通过BSI全球首批<b class='flag-5'>漏洞</b>管理体系认证

     LP6656芯茂微CRM 模式的功率因数校正控制器

    LP6656是一款CRM 控制模式的功率因数校正控制器。重载工作于 CRM 模式,中载/轻载工作于 DCM模式,且轻载会进 SKIP。LP6656 采用过零检测方式,实现 CRM 和 DCM 模式下
    发表于 01-16 09:29 0次下载

    黑神话:悟空热度飙升,英特尔Arc 撼与B580显卡强势“镇场”

    一只来自东方的“猴子”横空出世,引起全世界关注。8月20日,《黑神话:悟空》这款基于中国古典名著《西游记》的国产3A级动作角色扮演游戏全球发售,迅速成为游戏市场的焦点。它不仅展现了中国传统文化的魅力
    的头像 发表于 12-26 14:12 1346次阅读
    黑神话:<b class='flag-5'>悟空</b>热度飙升,英特尔Arc 撼与B580显卡强势“镇场”