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

    文章

    753

    浏览量

    44036
  • CRM
    CRM
    +关注

    关注

    1

    文章

    145

    浏览量

    21098
  • 数据库
    +关注

    关注

    7

    文章

    3752

    浏览量

    64236
  • HRM
    HRM
    +关注

    关注

    0

    文章

    10

    浏览量

    8964

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

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

收藏 人收藏

    评论

    相关推荐

    《黑神话:悟空》狂吃硬件性能,存储同步升级

    电子发烧友网报道(文/黄晶晶)8月20日,国产3A游戏《黑神话:悟空》于上午10时全球同步上线,并迅速成为Steam、WeGame等多个游戏平台销量榜首,更在美国、新加坡、泰国、加拿大、巴西等12个
    的头像 发表于 08-25 01:00 5701次阅读
    《黑神话:<b class='flag-5'>悟空</b>》狂吃硬件性能,存储同步升级

    迅为RK3588开发板!黑神话悟空,启动?

    《黑神话:悟空》是一款西游背景的动作角色扮演游戏,故事取材自中国古典神话小说《西游记》。玩家将扮演“天命人”,为了探寻昔日传说的真相而踏上这条千难万险的西行之路。作为国内首款3A大作,在20号发布
    发表于 09-23 10:48

    台媒报道:华为云携手赞奇科技 推出《黑神话:悟空》专属云游戏服务

    奇超高清云工作站为此还推出了限时优惠,新用户可以以 29.9 元/天的价格体验,尝鲜价更是低至 1.2 元/小时。 据了解,华为云联合赞奇科技推出《黑神话:悟空》专属机型套餐,提供专业级显卡、高性能磁盘及超大内存等,帮助本
    的头像 发表于 09-06 16:08 701次阅读
    台媒报道:华为云携手赞奇科技 推出《黑神话:<b class='flag-5'>悟空</b>》专属云游戏服务

    破界而生,智领未来——瑞芯微RK3588J_K7的“悟空之力”

    一夜之间,全球都是“天命人”。最近发布的《黑神话:悟空》掀起了一场全球范围的“西天取经”浪潮大家都被帅气的“悟空”硬控了。在《黑神话:悟空》中展现的悟空无畏精神和勇敢姿态也寓意着AI技
    的头像 发表于 09-03 08:06 333次阅读
    破界而生,智领未来——瑞芯微RK3588J_K7的“<b class='flag-5'>悟空</b>之力”

    畅玩《黑神话:悟空》,除了“官配”硬件还需要注意这些......

    畅玩《黑神话:悟空》,除了“官配”硬件还需要注意这些......
    的头像 发表于 08-30 14:58 358次阅读
    畅玩《黑神话:<b class='flag-5'>悟空</b>》,除了“官配”硬件还需要注意这些......

    RK3588!黑神话悟空,启动?-迅为电子RK3588开发板

    RK3588!黑神话悟空,启动?-迅为电子RK3588开发板
    的头像 发表于 08-30 14:13 474次阅读
    RK3588!黑神话<b class='flag-5'>悟空</b>,启动?-迅为电子RK3588开发板

    黑神话悟空对服务器有什么要求

    《黑神话:悟空》对服务器的要求主要包括高分辨率和光追技术的支持,需要高性能的显卡和处理器。Rak小编为您整理发布黑神话悟空对服务器有什么要求。
    的头像 发表于 08-21 10:41 374次阅读

    《黑神话:悟空》腾云驾雾来,技嘉RTX 4070 SUPER 悟空联名显卡 助力共绘西游神话新篇

    在古老的神话与现代的科技交织的边界,《黑神话:悟空》这部承载着无数玩家梦想的国产游戏巨作,8月20日正式上线。   在预告片放出之时,《黑神话:悟空》就已经是全球持续火热的“顶流”,其每一帧画面下
    的头像 发表于 08-20 13:55 304次阅读

    “态猴了”cp合体送福利,001号致态x《黑神话:悟空》联名版SSD花落谁家?

    国产游戏大作《黑神话:悟空》即将全球上线,京东作为其全球官方合作伙伴,提前为游戏爱好者带来了前所未有的惊喜,上门送出全球首单《黑神话:悟空》实体收藏版。 面对京东采销送来的《黑神话:悟空》实体收藏版
    的头像 发表于 08-19 15:19 374次阅读

    《中新社》关注“本源悟空”境外访问量美国排第一

    走进本源量子计算机组装与测试实验室,中国第三代自主超导量子计算机“本源悟空”正伴随着机器运行的嗡鸣声,运算来自世界各地的量子计算任务。据介绍,在“本源悟空”的境外访问用
    的头像 发表于 07-06 08:22 252次阅读
    《中新社》关注“本源<b class='flag-5'>悟空</b>”境外访问量美国排第一

    悟空派全志H3开发板做一个基于ROS系统的全向轮小车

    悟空派是一款开源的单板卡片电脑,新一代的Linux开发板,它可以运行Linux、Ubuntu和 Debian 等操作系统。悟空派H3 Zero开发板使用全志H3 系统级芯片,同时拥有 256MB
    发表于 05-06 11:15

    “本源悟空”全球访问量突破100万,已完成14万个运算任务

    截至2月1日上午11时,我国第三代自主超导量子计算机“本源悟空”已为全球94个国家和地区用户成功完成142233个运算任务,全球远程访问“悟空”人次已突破100万。我国第三代自主超导量子计算机“本源
    的头像 发表于 02-19 12:50 325次阅读
    “本源<b class='flag-5'>悟空</b>”全球访问量突破100万,已完成14万个运算任务

    Salesforce x阿里云,打造“中国口味”的CRM

    打造“中国口味”的CRM
    的头像 发表于 01-18 15:11 375次阅读

    中国战略支援部队公号关注超导量子计算机“本源悟空”上线运行

    1月6日,中国第三代自主超导量子计算机“本源悟空”正式上线运行。据报道,该量子计算机搭载72位自主超导量子芯片“悟空芯”,是目前中国最先进的可编程、可交付超导量子计算机。“悟空”这一名字,则是取自中国传统文化中的神话人物孙
    的头像 发表于 01-12 08:21 492次阅读
    中国战略支援部队公号关注超导量子计算机“本源<b class='flag-5'>悟空</b>”上线运行

    手机格式化新用

    看小说新用户奖励,手机格式化之后换个号码还能领取新用户奖励,请问有大佬知道不格式化自己动手去删除根文件能达到格式化效果吗
    发表于 12-07 19:14