乌云(WooYun.org)历史漏洞查询---http://wy.zone.ci/
乌云 Drops 文章在线浏览--------http://drop.zone.ci/
2014-03-04: 细节已通知厂商并且等待厂商处理中 2014-03-04: 厂商已经确认,细节仅向厂商公开 2014-03-07: 细节向第三方安全合作伙伴开放 2014-04-28: 细节向核心白帽子及相关领域专家公开 2014-05-08: 细节向普通白帽子公开 2014-05-18: 细节向实习白帽子公开 2014-06-02: 细节向公众公开
看到官网上又更新了 2014-2-25 加强了SQL安全注入。特别感谢白帽子:(′ 雨。、C4nf3ng、Jim叔叔、寂寞的瘦子、lxj616 )对程序的漏洞检测。 还感谢了各白帽子啊 还不错。那就继续挖挖?
在user\pay.php中
public function tenpay_return_url() { require_once (CSCMSPATH."tenpay/ResponseHandler.class.php"); $resHandler = new ResponseHandler(); $resHandler->setKey($key); //判断签名 if($resHandler->isTenpaySign()) { //通知id $notify_id = $resHandler->getParameter("notify_id"); //商户订单号 $out_trade_no = $resHandler->getParameter("out_trade_no"); //财付通订单号 $transaction_id = $resHandler->getParameter("transaction_id"); //如果有使用折扣券,discount有值,total_fee+discount=原请求的total_fee $discount = $resHandler->getParameter("discount"); //支付结果 $trade_state = $resHandler->getParameter("trade_state"); //交易模式,1即时到账 $trade_mode = $resHandler->getParameter("trade_mode"); if("1" == $trade_mode ) { if( "0" == $trade_state){ $row=$this->db->query("select CS_RMB from ".CS_SqlPrefix."pay where CS_Dingdan='".$out_trade_no."'")->row(); if(!$row){ $this->CsdjSkins->Msg_url('验证失败,该定单不存在!',site_url('user')); } $this->CsdjSkins->Msg_url('恭喜您,成功充值了 '.$row->CS_RMB.' 元,若出现问题请尽快联系客服,请牢记您的定单号:'.$out_trade_no.'!',site_url('user')); } else { //当做不成功处理 echo "<br/>" . "即时到帐支付失败" . "<br/>"; } }elseif( "2" == $trade_mode ) { if( "0" == $trade_state) { echo "<br/>" . "中介担保支付成功" . "<br/>"; } else { echo "<br/>" . "中介担保支付失败" . "<br/>"; } } } else { echo "<br/>" . "认证签名失败" . "<br/>"; echo $resHandler->getDebugInfo() . "<br>";
getParameter 就相当request把?这里是没有过滤的。 但是有点验证。
function isTenpaySign() { $signPars = ""; ksort($this->parameters); foreach($this->parameters as $k => $v) { if("sign" != $k && "" != $v) { $signPars .= $k . "=" . $v . "&"; } } $signPars .= "key=" . $this->getKey(); $sign = strtolower(md5($signPars)); $tenpaySign = strtolower($this->getParameter("sign")); //debug信息 $this->_setDebugInfo($signPars . " => sign:" . $sign . " tenpaySign:" . $this->getParameter("sign")); return $sign == $tenpaySign; }
相等即可。Come and Sql it.
官网测试成功。还可以充值任意金额。
Check it.
危害等级:高
漏洞Rank:20
确认时间:2014-03-04 13:57
非常感谢~!已经修复~!
暂无