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

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

缺陷编号:wooyun-2015-093304

漏洞标题:PHPB2B注入#4(绕过过滤)

相关厂商:phpb2b.com

漏洞作者: loopx9

提交时间:2015-01-30 10:06

修复时间:2015-04-02 10:23

公开时间:2015-04-02 10:23

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:15

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

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

绕过全局sql注入过滤。

详细说明:

function Add($primary_id, $form_attributes, $form_id=1, $type_id = 1)
{
$datas = array();
$inserts = null;
$reurn_attribute_ids = null;
$form_attributes = array_filter($form_attributes);
if (!empty($form_attributes) && is_array($form_attributes)) {
foreach ($form_attributes as $key=>$val) { //foreach遍历form_attributes数组
if($attribute_id = $this->dbstuff->GetOne("SELECT id FROM {$this->table_prefix}formattributes f WHERE primary_id={$primary_id} AND formitem_id={$key} AND type_id={$type_id} AND form_id={$form_id}")){ //$key为数组键名,没有过滤就直接进入了sql语句
$this->dbstuff->Execute("UPDATE {$this->table_prefix}formattributes SET attribute='{$val}' WHERE primary_id={$primary_id} AND formitem_id={$key} AND type_id={$type_id} AND form_id={$form_id}");
}else{
$datas[] = "(".$type_id.",".$form_id.",".$key.",".$primary_id.",'".$val."')";
}
}


搜索Add函数找到几处可以利用的地方:

\virtual-office\offer.php (2 hits)
Line 291: $item_ids = $form->Add($id,$_POST['data']['formitem']);
Line 321: $item_ids = $form->Add($last_trade_id, $_POST['data']['formitem']);
\virtual-office\product.php (2 hits)
Line 62: $item_ids = $form->Add($id,$_POST['data']['formitem'], $form_id, $form_type_id);
Line 77: $item_ids = $form->Add($product_id, $_POST['data']['formitem'], $form_id, $form_type_id);


因为注入点是在数组键名,而phpb2b恰好只对值进行了过滤,没处理键名,所以可直接进行sql注射,同时也不用考虑GPC的影响。

漏洞证明:

注册会员发布一个供求信息,然后编辑:

1.png


修改好参数提交。
sql日志:

2.png

修复方案:

增加对键名的过滤。

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


漏洞回应

厂商回应:

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

忽略时间:2015-04-02 10:23

厂商回复:

最新状态:

暂无