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

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

缺陷编号:wooyun-2015-0114060

漏洞标题:kppw最新版本 注入两个

相关厂商:keke.com

漏洞作者: Cheery

提交时间:2015-05-18 10:09

修复时间:2015-08-21 10:10

公开时间:2015-08-21 10:10

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:15

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

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-05-18: 细节已通知厂商并且等待厂商处理中
2015-05-23: 厂商主动忽略漏洞,细节向第三方安全合作伙伴开放
2015-07-17: 细节向核心白帽子及相关领域专家公开
2015-07-27: 细节向普通白帽子公开
2015-08-06: 细节向实习白帽子公开
2015-08-21: 细节向公众公开

简要描述:

我是来拿wooyun号的,求第一个洞来个高rank!

详细说明:

在 control\user\account_report.php 和 control\user\account_rights.php中,也就是举报管理处,我们拿第一个来说明一下
<插一句话 上面玉林嘎找的6个注入里面(baner和balance)(goodslist和tasklist)结构相同,所以两个都存在一样的漏洞,就会多几个地方的注入了,这个算吗?>

<?php
$page and $intPage = intval($page);
$type=strval($type) ? $type : 1;
$op = strval($op);
$strUrl ="index.php?do=user&view=account&op=report";
$type and $strUrl .="&type=".intval($type);
$intPagesize and $strUrl .="&intPagesize=".intval($intPagesize);
$strReportObj and $strUrl .="&reportObj=".strval($strReportObj);
$strReportStatus and $strReportStatus .="&reportStatus=".strval($strReportStatus);
$arrReportObj = array(
'task' => '任务',
'work' => '稿件',
'product' =>'商品'
);
$arrReportStatus = array(
'1' =>'待处理',
'2' =>'处理中',
'3' =>'未成立',
'4' =>'已处理'
);
$objReportT = keke_table_class::get_instance('witkey_report');
if (isset ( $action )) {
switch ($action) {
case 'mulitDel' :
if ($ckb) {
$objTaskT->del ( 'task_id', $ckb );
kekezu::show_msg ( '删除成功', $strUrl, NULL, NULL, 'ok' );
} else {
kekezu::show_msg ( '删除失败', NULL, NULL, NULL, 'error' );
}
break;
case 'delSingle' :
if ($objId) {
$objTaskT->del ( 'task_id', intval($objId) );
kekezu::show_msg ( '删除成功', $strUrl, NULL, NULL, 'ok' );
} else {
kekezu::show_msg ( '删除失败', NULL, NULL, NULL, 'error' );
}
break;
}
} else {
$strWhere = " 1=1 ";
$strWhere .= " and report_type = 2 ";
if($type == 2){
$strWhere .= " and to_uid = ".$gUid;
}else{
$strWhere .= " and uid = ".$gUid;
}
$intPage = intval ( $intPage ) ? $intPage : 1;
$intPagesize = intval ( $intPagesize ) ? $intPagesize : 10;
if(isset($strReportStatus)&&$strReportStatus!=''&&$strReportStatus > -1){
$strWhere .= " and report_status=".intval($strReportStatus);
}else{
$strReportStatus = -1;
}
if(isset($strReportObj)&&$strReportObj!=''){
$strWhere .= " and obj= '$strReportObj'";
}else{
$strReportObj = ' ';
}
$strOrder&&in_array($strOrder, array_keys($arrListOrder)) and $strWhere .= " order by ".$strOrder.', report_id desc ' or $strWhere .= " order by report_id desc";
$arrDatas = $objReportT->get_grid($strWhere, $strUrl, $intPage, $intPagesize, null,null,null);
$arrReportLists = $arrDatas ['data'];
$intCount = $arrDatas ['count'];
$strPages = $arrDatas ['pages'];
}
unset($objReportT);


可以看见这个地方 $strOrder&&in_array($strOrder, array_keys($arrListOrder)) and $strWhere .= " order by ".$strOrder.', report_id desc ' or $strWhere .= " order by report_id desc";
这个cms采用伪全局,所以我们可以构造$strOrder=1,sleep(20)%23 和 arrListOrder[1,sleep(20)%23] (即$strOder的值与$arrListOrder的键值相等就可以)
接下来证明吧

漏洞证明:

我们需要先随便创建一个新号,这个没有什么限制,然后举报一个商品,让查询语句不为空,就可以利用盲注了

1.png


3.png


我们看结果

4.png


5.png


成功sleep 0.0

修复方案:

变量初始值定义!

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


漏洞回应

厂商回应:

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

忽略时间:2015-08-21 10:10

厂商回复:

漏洞Rank:4 (WooYun评价)

最新状态:

暂无