WooYun-2014-52363:CSDJCMS程式舞曲最新版Sql 一枚
漏洞作者: ′雨。
来源:http://www.wooyun.org/bugs/wooyun-2014-052363
简要描述
看到官网上又更新了 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.