漏洞概要
关注数(24 )
关注此漏洞
漏洞标题:kppw最新版本 注入两个
提交时间:2015-05-18 10:09
修复时间:2015-08-21 10:10
公开时间:2015-08-21 10:10
漏洞类型:SQL注射漏洞
危害等级:高
自评Rank:15
漏洞状态:漏洞已经通知厂商但是厂商忽略漏洞
Tags标签:
无
漏洞详情 披露状态:
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的键值相等就可以) 接下来证明吧
漏洞证明: 我们需要先随便创建一个新号,这个没有什么限制,然后举报一个商品,让查询语句不为空,就可以利用盲注了
我们看结果
成功sleep 0.0
修复方案: 漏洞回应 厂商回应: 危害等级:无影响厂商忽略
忽略时间:2015-08-21 10:10
厂商回复:
漏洞Rank:4 (WooYun评价)
最新状态: 暂无