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

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

缺陷编号: WooYun-2013-46023

漏洞标题: 易思ESPCMS设计缺陷可登录任意账号

相关厂商: 易思ESPCMS企业网站管理系统

漏洞作者: 贱心

提交时间: 2013-12-15 16:15

公开时间: 2014-03-15 16:16

漏洞类型: 设计缺陷/逻辑错误

危害等级: 高

自评Rank: 20

漏洞状态: 厂商已经确认

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

Tags标签: 设计缺陷/边界绕过 php源码审核 php源码分析 白盒测试

1人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

易思ESPCMS某处设计缺陷(验证过弱)可登录任意用户账号

详细说明:

易思ESPCMS cookie存在设计缺陷

我看下cookie都有哪些参数

code 区域
ecisp_home_seccode
ecisp_member_username
ecisp_member_info



code 区域
function member_cookieview($keyword = false) {
$retrunstr = array();
$retrunstr['username'] = $this->fun->eccode($this->fun->accept('ecisp_member_username', 'C'), 'DECODE', db_pscode);
$user_info = explode('|', $this->fun->eccode($this->fun->accept('ecisp_member_info', 'C'), 'DECODE', db_pscode));

list($retrunstr['userid'], $retrunstr['alias'], $retrunstr['integral'], $retrunstr['mcid'], $retrunstr['email'], $retrunstr['lastip'], $retrunstr['ipadd'], $retrunstr['useragent'], $retrunstr['adminclassurl']) = $user_info;

$retrunstr['userid'] = intval($retrunstr['userid']);
$retrunstr['integral'] = intval($retrunstr['integral']);
$retrunstr['mcid'] = intval($retrunstr['mcid']);

return !$keyword ? $retrunstr : $retrunstr[$keyword];
}



code 区域
function in_center() {
if ($this->CON['mem_isucenter']) {
include_once admin_ROOT . 'public/uc_client/client.php';
}
parent::start_pagetemplate();
parent::member_purview();
$lng = (admin_LNG == 'big5') ? $this->CON['is_lancode'] : admin_LNG;
$db_where = "userid=$this->ec_member_username_id AND username='$this->ec_member_username' ";
echo $db_where;
$db_table1 = db_prefix . 'member AS a';
$db_table2 = db_prefix . 'member_value AS b';
$db_sql = "SELECT * FROM $db_table1 LEFT JOIN $db_table2 ON a.userid = b.userid WHERE a.userid = $this->ec_member_username_id ";
$rsMember = $this->db->fetch_first($db_sql);
$rsMember['userid'] = $this->ec_member_username_id;

$rsMember['rankname'] = $this->get_member_purview($rsMember['mcid'], 'rankname');
$userid = intval($rsMember['userid']);
if (empty($userid)) {
exit('user err!');
}
$db_table = db_prefix . "order";

$db_where = " WHERE userid=$userid";

$db_where2 = " WHERE userid=$userid and ordertype=1";

$db_where3 = " WHERE userid=$userid and ordertype=3";
$this->pagetemplate->assign('ordernum', $this->db_numrows($db_table, $db_where));
$this->pagetemplate->assign('ordernum2', $this->db_numrows($db_table, $db_where2));
$this->pagetemplate->assign('ordernum3', $this->db_numrows($db_table, $db_where3));

$db_table = db_prefix . "bbs";
$db_where = " WHERE userid=$userid";

$this->pagetemplate->assign('messagenum', $this->db_numrows($db_table, $db_where));

$templatesDIR = $this->get_templatesdir('member');

$templatefilename = $lng . '/' . $templatesDIR . '/member_center';
$this->pagetemplate->assign('out', 'center');
$this->pagetemplate->assign('mlink', $this->mlink);
$this->pagetemplate->assign('member', $rsMember);
$this->pagetemplate->assign('path', 'member');
unset($rsMember, $mlink, $LANPACK, $this->lng);
$this->pagetemplate->display($templatefilename, 'center', false, null, admin_LNG);
}



ecisp_member_info的构成:

code 区域
$this->fun->setcookie('ecisp_member_info', $this->fun->eccode("500|$rsMember[alias]|$rsMember[integral]|$rsMember[mcid]|$rsMember[email]|$rsMember[lastip]|$ipadd|" . md5($_SERVER['HTTP_USER_AGENT']) . '|' . md5(admin_ClassURL), 'ENCODE', db_pscode));



从代码中可以看出验证用户真正用到的是userid

也就是说cookie中ecisp_member_info真正起到作用的是userid部分

userid只占用了cookie ecisp_member_info字符串中很少的字符

而这一部分字符才是起到作用的,其他的无关紧要,这样的验证是不是很弱呢?

那我们是不是可以去爆破它呢?

我们拿官方演示站来做一下演示:

漏洞证明:

QQ截图20131215155548.jpg



QQ截图20131215155608.jpg



QQ截图20131215155932.jpg



QQ截图20131215160021.jpg



QQ截图20131215160114.jpg



查询的 IP:**.**.**.** 来自:陕西省 电信



GeoIP: Xian, China



China Telecom

查询的 IP:**.**.**.** 来自:陕西省西安市 联通



GeoIP: Xian, China



China Unicom Shannxi province network

查询的 IP:**.**.**.** 来自:辽宁省 电信



GeoIP: Shenyang, China



GuangZhouWanGuanGuoJiMaoYiFaZhanYouXianGongSi-SY-L



userid部分 最少两个字符

理论上可以登录所有用户

修复方案:

null

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:10

确认时间:2013-12-15 16:29

厂商回复:

感谢您对此漏洞的提供,非常感谢,我们会尽快修复!

最新状态:

暂无


漏洞评价:

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

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

评价

  1. 2013-12-15 16:18 | xsser 认证白帽子 ( 普通白帽子 | Rank:297 漏洞数:22 | 当我又回首一切,这个世界会好吗?)
    0

    这谁啊 换个名字吧 不雅

  2. 2013-12-15 16:19 | 剑无名 ( 普通白帽子 | Rank:146 漏洞数:32 | 此剑无名。)
    0

    @xsser 你直接改吧!粗暴管理员

  3. 2013-12-15 17:01 | niliu 认证白帽子 ( 核心白帽子 | Rank:1719 漏洞数:226 | 逆流而上)
    0

    哈哈哈

  4. 2013-12-19 09:40 | erevus ( 普通白帽子 | Rank:197 漏洞数:32 )
    0

    @xsser 哈哈哈哈哈哈 我知道这是谁

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