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

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

缺陷编号:wooyun-2014-051894

漏洞标题:Easytalk V2.5 任意用户登录

相关厂商:nextsns.com

漏洞作者: 酱油甲

提交时间:2014-02-24 15:41

修复时间:2014-05-25 15:42

公开时间:2014-05-25 15:42

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

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-02-24: 细节已通知厂商并且等待厂商处理中
2014-02-24: 厂商已经确认,细节仅向厂商公开
2014-02-27: 细节向第三方安全合作伙伴开放
2014-04-20: 细节向核心白帽子及相关领域专家公开
2014-04-30: 细节向普通白帽子公开
2014-05-10: 细节向实习白帽子公开
2014-05-25: 细节向公众公开

简要描述:

Easytalk <= V2.5 任意用户登录,包括管理员后台登陆

详细说明:

Easytalk <= V2.5 任意用户登录,包括管理员后台登陆
--------
首先是前台:
问题出在:Home/Common/function.php中的function authcode()

function authcode($string, $operation = 'DECODE', $key = '', $expiry = 0) {
$ckey_length = 4;
$key = md5($key ? $key : SITE_URL);
$keya = md5(substr($key, 0, 16));
$keyb = md5(substr($key, 16, 16));


以及Home/lib/Action/IndexAction.class.php中的dologin

if ($remember=="checked") {
Cookie::set('authcookie', authcode("$user[user_name]\t$user[user_id]\t1",'ENCODE'), 31536000);
} else {
Cookie::set('authcookie', authcode("$user[user_name]\t$user[user_id]\t0",'ENCODE'));
}


由于只验证了$user[user_name]\t$user[user_id] 而user_id可以在收听时候得到:

1.jpg


而在function authcode()中,唯一用来判别不同网站的key,默认是没有的,那就会使用SITE_URL,也就是网站地址:例如http://wb.sol.net.cn这个站点,那SITE_URL=http://wb.sol.net.cn
我们可以通过指定SITE_URL来得到authcookie:

2.jpg


然后登录~~

3.jpg


---------------------------------------------
------------------
同样,在后台登陆时候,也使用了这个函数:

if($user) {
Cookie::set('adminauth', authcode("$user_name\t$user[user_id]",'ENCODE'));
echo '<script>parent.location.href="'.SITE_URL.'/admin.php?s=/Index"</script>';
} else {
$this->redirect('/Login/index');
}


用户可以自己使用authcode函数计算出adminauth的值,登录后台。

漏洞证明:

已测V2.5,V2.4

修复方案:

不要这么简单的验证cookie……

版权声明:转载请注明来源 酱油甲@乌云


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:20

确认时间:2014-02-24 17:03

厂商回复:

该问题已经再最新版本的2.5中解决了。2.5重新上传了

最新状态:

暂无