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

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

缺陷编号:wooyun-2014-086201

漏洞标题:KPPW最新版SQL注入漏洞二

相关厂商:keke.com

漏洞作者: xfkxfk

提交时间:2014-12-09 00:34

修复时间:2015-03-09 00:36

公开时间:2015-03-09 00:36

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:15

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

KPPW最新版SQL注入漏洞二

详细说明:

KPPW最新版SQL注入漏洞二
文件/control/user/account_auth.php

$arrAllowAuth = array('realname','enterprise','bank','mobile','email');
if ($code&&in_array($code,$arrAllowAuth)) {
$code or $code = $keys ['0'];
$code or kekezu::show_msg ( $_lang ['param_error'], "index.php?do=auth", 3, '', 'warning' );
$auth_class = "keke_auth_" . $code . "_class";
$objAuth = new $auth_class ( $code );
$auth_item = $arrAllAuthItems [$code];
$auth_dir = $auth_item ['auth_dir'];
$arrAuthInfo = $objAuth->get_user_auth_info ( $gUid, 0, $intBankAid );
require S_ROOT . "/auth/$code/control/index.php";
require keke_tpl_class::template ( 'auth/' . $code . '/tpl/' . $_K ['template'] . '/'.$step );
die;
} else {
$real_pass = keke_auth_fac_class::auth_check ( 'enterprise', $gUid ) or $real_pass = keke_auth_fac_class::auth_check ( "realname", $gUid );
$arrHasAuthItem = keke_auth_fac_class::get_auth ( $gUserInfo );
$arrUserAuthInfo = $arrHasAuthItem ['info'];
}


仔细看看这里的:

$arrAuthInfo = $objAuth->get_user_auth_info ( $gUid, 0, $intBankAid );


这里的变量$intBankAid进入了函数get_user_auth_info函数
跟进函数get_user_auth_info
文件/lib/sys/keke_auth_base_class.php:

public function get_user_auth_info($uid,$is_username=0,$show_id=''){
$sql="select * from ".TABLEPRE.$this->_auth_table_name;
if($uid){
$is_username=='0' and $sql.=" where uid = '$uid' " or $sql.=" where username = '$uid' ";
$show_id and $sql.=" and ".$this->_primary_key."=".$show_id;
$sql .=" order by $this->_primary_key desc";
$data = db_factory::query($sql);
if(sizeof($data)==1){
return $data[0];
}else{
return $data;
}
}else{
return array();
}
}


接收到的变量$intBankAid——$show_id,然后$show_id进入$sql
整个过程中变量$intBankAid未过滤,最后进入$sql进入数据库,导致sql注入漏洞

漏洞证明:

盲注证明:

http://localhost/KPPW2520141118UTF-8/index.php?do=user&view=account&op=auth&code=bank&step=step2&intBankAid=147 and 1=1


1.png


http://localhost/KPPW2520141118UTF-8/index.php?do=user&view=account&op=auth&code=bank&step=step2&intBankAid=147 and 1=2


2.png


数据库执行记录:

3.png

修复方案:

get_user_auth_info函数:
$show_id and $sql.=" and ".$this->_primary_key."='".$show_id."'";

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


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:5

确认时间:2014-12-10 10:02

厂商回复:

漏洞已修复
-QK

最新状态:

暂无