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

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

缺陷编号:wooyun-2014-052363

漏洞标题:CSDJCMS程式舞曲最新版Sql 一枚

相关厂商:chshcms.com

漏洞作者: ′雨。

提交时间:2014-03-04 10:50

修复时间:2014-06-02 10:51

公开时间:2014-06-02 10:51

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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.

漏洞证明:

K3I{I61$J@MC{OH8F4D1RTD.jpg


官网测试成功。
还可以充值任意金额。

修复方案:

Check it.

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:20

确认时间:2014-03-04 13:57

厂商回复:

非常感谢~!
已经修复~!

最新状态:

暂无