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

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

缺陷编号:wooyun-2014-055026

漏洞标题:Destoon Sql注入漏洞2(有条件)

相关厂商:DESTOON

漏洞作者: ′雨。

提交时间:2014-03-30 15:39

修复时间:2014-06-28 15:39

公开时间:2014-06-28 15:39

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

过滤不严。

详细说明:

上次是alipay 这次来个paypal的。 当然 tenpay也有这洞
paypal 和 tenpay的一起说了。
api\pay\paypal\notify.php中

require '../../../common.inc.php';
$_POST = $_DPOST;
if(!$_POST) exit('fail');
$bank = 'paypal';
$PAY = cache_read('pay.php');
if(!$PAY[$bank]['enable']) exit('fail'); //得开启这种支付方式。
if(!$PAY[$bank]['partnerid']) exit('fail');


$item_name = $_POST['item_name'];
$item_number = $_POST['item_number'];
$payment_status = $_POST['payment_status'];
$payment_amount = $_POST['mc_gross'];
$payment_currency = $_POST['mc_currency'];
$txn_id = $_POST['txn_id'];
$receiver_email = $_POST['receiver_email'];
$payer_email = $_POST['payer_email'];
$charge_status = 0;
$sql="SELECT * FROM {$DT_PRE}finance_charge WHERE itemid='$item_number' AND status=0";
$r = $db->get_one("SELECT * FROM {$DT_PRE}finance_charge WHERE itemid='$item_number' AND status=0");


paypal无过滤。 连验证都没验证。
直接注入
————————————————————————————————————————
tenpay

if($resHandler->isTenpaySign()) {

//通知id
$notify_id = $resHandler->getParameter("notify_id");


//通过通知ID查询,确保通知来至财付通
//创建查询请求
$queryReq = new RequestHandler();
$queryReq->init();
$queryReq->setKey($key);
$queryReq->setGateUrl("https://gw.tenpay.com/gateway/simpleverifynotifyid.xml");
$queryReq->setParameter("partner", $partner);
$queryReq->setParameter("notify_id", $notify_id);

//通信对象


tenpay里面多了个验证 不过可以轻松通过。、

$transaction_id = $resHandler->getParameter("transaction_id");
//金额,以分为单位
$total_fee = $resHandler->getParameter("total_fee");
//如果有使用折扣券,discount有值,total_fee+discount=原请求的total_fee
$discount = $resHandler->getParameter("discount");

//------------------------------
//处理业务开始
//------------------------------

//处理数据库逻辑
//注意交易单不要重复处理
//注意判断返回金额
$total_fee = ($total_fee+$discount)/100;
$r = $db->get_one("SELECT * FROM {$DT_PRE}finance_charge WHERE itemid='$out_trade_no'");


然后带入查询。

漏洞证明:

d8.jpg


看看所执行的语句。

d9.jpg

修复方案:

过滤。

版权声明:转载请注明来源 ′雨。@乌云


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:15

确认时间:2014-04-01 08:10

厂商回复:

感谢反馈,我们会尽快修复

最新状态:

暂无


漏洞评价:

评论

  1. 2014-03-30 17:18 | 走火入魔 ( 路人 | Rank:18 漏洞数:2 | 多读书,多看报,少吃零食,多睡觉。)

    这是在刷漏洞啊

  2. 2014-09-29 16:33 | D&G ( 普通白帽子 | Rank:523 漏洞数:103 | going)

    这里不需要绕过全局的过滤么,

  3. 2014-09-29 17:32 | ′ 雨。 ( 普通白帽子 | Rank:1231 漏洞数:190 | Only Code Never Lie To Me.)

    @D&G 之前不用 没包含进来 现在不知道了。

  4. 2014-09-29 17:58 | D&G ( 普通白帽子 | Rank:523 漏洞数:103 | going)

    恩恩。谢谢~