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

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

缺陷编号: WooYun-2015-109211

漏洞标题: cmseasy最新版 一枚注入

相关厂商: cmseasy

漏洞作者: 玉林嘎认证白帽子

提交时间: 2015-04-21 17:22

公开时间: 2015-07-20 17:26

漏洞类型: SQL注射漏洞

危害等级: 中

自评Rank: 10

漏洞状态: 厂商已经确认

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

Tags标签: 无

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-04-21: 细节已通知厂商并且等待厂商处理中
2015-04-21: 厂商已经确认,细节仅向厂商公开
2015-04-24: 细节向第三方安全合作伙伴开放(绿盟科技唐朝安全巡航无声信息
2015-06-15: 细节向核心白帽子及相关领域专家公开
2015-06-25: 细节向普通白帽子公开
2015-07-05: 细节向实习白帽子公开
2015-07-20: 细节向公众公开

简要描述:

可惜没绕过360webscan(其实是轻松绕过的)

详细说明:

cmseasy最新版0318 存在一个注入



漏洞文件:/lib/default/archive_act.php

250-251行:

code 区域
function search_action() {//print_r($_SESSION);exit();
if (front::get('ule')) {
front::$get['keyword'] = str_replace('-', '%', front::$get['keyword']);
front::$get['keyword'] = urldecode(front::$get['keyword']);
}
if (front::get('keyword') && !front::post('keyword'))
front::$post['keyword'] = front::get('keyword');
front::check_type(front::post('keyword'), 'safe');
if (front::post('keyword')) {
$this->view->keyword = trim(front::post('keyword'));
session::set('keyword', trim(front::post('keyword')));
/* if(isset(front::$get['keyword']))
front::redirect(preg_replace('/keyword=[^&]+/','keyword='.urlencode($this->view->keyword),front::$uri));
else front::redirect(front::$uri.'&keyword='.urlencode($this->view->keyword)); */
} else {
$this->view->keyword = session::get('keyword');
}

if(preg_match('/union/i',$this->view->keyword) || preg_match('/"/i',$this->view->keyword) ||preg_match('/\'/i',$this->view->keyword)){
exit('非法参数');
}





重要代码:

code 区域
if (front::get('ule')) {
front::$get['keyword'] = str_replace('-', '%', front::$get['keyword']);
front::$get['keyword'] = urldecode(front::$get['keyword']);
}



get获取的ule存在即可进入这个条件语句

- 变成 % 之后urldecode

导致可以直接引入' 只需传入-27即可



再看

code 区域
session::set('keyword', trim(front::post('keyword')));





对应函数代码:

code 区域
class session {
static function get($key) {
if (isset($_SESSION[$key]))
return $_SESSION[$key];
else
return false;
}
static function set($key,$var) {
$_SESSION[$key]=$var;
}
static function del($key) {
unset($_SESSION[$key]);
}
}
//session_start();





cmseasy在赋予session值后 会进行一个write操作

/lib/plugins/stsession.php

code 区域
public function write($id,$data) {
$sql = "SELECT * FROM {$this->_prefix}sessionox where PHPSESSID = '$id'";
//var_dump($sql);
$res = $this->_db->query($sql);
$time = time();
$row = $this->_db->fetch_array($res);
if ($row) {
//if ($row['data'] != $data) {
$sql = "UPDATE {$this->_prefix}sessionox SET update_time='$time',data='$data' WHERE PHPSESSID = '$id'";
$this->_db->query($sql);
//}
} else {
if (!empty($data)) {
$sql = "INSERT INTO {$this->_prefix}sessionox (PHPSESSID, update_time, client_ip, data) VALUES ('$id','$time','$this->_ip','$data')";
$this->_db->query($sql);
}
}
return true;
}



$data数据进入update操作 造成注入



而之后参数preg_match是在数据库操作之后 并无影响

code 区域
if(preg_match('/union/i',$this->view->keyword) || preg_match('/"/i',$this->view->keyword) ||preg_match('/\'/i',$this->view->keyword)){
exit('非法参数');
}





而拦截白名单也做出更改了 想不到办法绕过360webscan

code 区域
/**
* 拦截目录白名单
*/
function webscan_white($webscan_white_name,$webscan_white_url=array()) {
$url_path=$_SERVER['SCRIPT_NAME'];
foreach($_GET as $key=>$value){
$url_var.=$key."=".$value."&";
}
if (preg_match("/".$webscan_white_name."/is",$url_path)==1&&!empty($webscan_white_name)) {
return false;
}
foreach ($webscan_white_url as $key => $value) {
if(!empty($url_var)&&!empty($value)){
if (stristr($url_path,$key)&&stristr($url_var,$value)) {
return false;
}
}
elseif (empty($url_var)&&empty($value)) {
if (stristr($url_path,$key)) {
return false;
}
}

}

return true;
}

漏洞证明:

证明一下存在注入



**.**.**.**/cmseasy/index.php?case=archive&act=search&keyword=-27,client_ip=user()-23&ule=1

1.jpg





2.png





绕过了360webscan就可以直接盲注了

修复方案:

版权声明:转载请注明来源 玉林嘎@乌云


漏洞回应

厂商回应:

危害等级:低

漏洞Rank:5

确认时间:2015-04-21 17:24

厂商回复:

谢谢,马上修正

最新状态:

暂无


漏洞评价:

对本漏洞信息进行评价,以更好的反馈信息的价值,包括信息客观性,内容是否完整以及是否具备学习价值

漏洞评价(共0人评价):
登陆后才能进行评分

评价

  1. 2015-04-25 10:12 | 胡小树 ( 实习白帽子 | Rank:66 漏洞数:13 | 我是一颗小小树)
    0

    牛逼啊,还能找到注入,学习

  2. 2015-04-26 13:11 | AK-47 ( 实习白帽子 | Rank:78 漏洞数:11 | 开开心心挖洞,踏踏实实上学!)
    0

    厉害,敢为楼主收徒不?

  3. 2015-07-17 13:48 | menmen519 ( 普通白帽子 | Rank:914 漏洞数:161 | http://menmen519.blog.sohu.com/)
    0

    可以绕过的 改了等于没改case[case=admin]=1&case=archive&act=edit&catid=1 这样就轻松绕过了

  4. 2015-07-17 19:12 | 玉林嘎 认证白帽子 ( 普通白帽子 | Rank:933 漏洞数:107 )
    0

    @menmen519 门神 威武

  5. 2015-07-22 23:36 | 好吃佬 ( 普通白帽子 | Rank:190 漏洞数:30 | 混迹hacker,没有饭吃)
    0

    @menmen519 马克学习

  6. 2015-10-05 15:30 | BeenQuiver ( 普通白帽子 | Rank:103 漏洞数:27 | 专注而高效,坚持好的习惯千万不要放弃)
    0

    绕过waf的好一手

登录后才能发表评论,请先 登录