PHPYUN逻辑错误无限刷积分

漏洞详情

披露状态:

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

简要描述:

PHPYUN逻辑错误无限积分所以标题党了一下!

详细说明:

逻辑错误

未对用户输入严格过滤!

问题发生在

member/model/com.class.php

1158行

$integral=$this->config["integral_com_comments"]*$_POST['time'];
.....
if($statis["integral"]<$integral){
$this->obj->ACT_msg("index.php?C=pay","你的".$this->config["integral_pricename"]."不足,请先充值");
}
.....
$nid=$this->obj->company_invtal($this->uid,$integral,false,"购买会员等级");
....



进行找到company_invtal方法

function company_invtal($uid,$integral,$auto=true,$name="",$pay=true,$pay_state=2,$type="integral"){
if($auto){
$nid=$this->DB_update_all("company_statis","`".$type."`=`".$type."`+".$integral."","uid='".$uid."'");
}else{
$nid=$this->DB_update_all("company_statis","`".$type."`=`".$type."`-".$integral."","uid='".$uid."'");
$integral="-".$integral;
}
if($pay){
$dingdan=mktime().rand(10000,99999);
$value="`order_id`='".$dingdan."',";
$value.="`com_id`='".$uid."',";
$value.="`pay_remark`='".$name."',";
$value.="`pay_state`='".$pay_state."',";
$value.="`pay_time`='".mktime()."',";
$value.="`order_price`='".$integral."',";
if($type=="integral"){
$value.="`type`='1'";
}else{
$value.="`type`='2'";
}
$this->DB_insert_once("company_pay",$value);
}
return $nid;
}



这里也没有判断正负数 直接 减。。。

漏洞证明:

访问

/member/index.php?C=buyvip

phpyun_bug4.jpg





phpyun_bug5.jpg





phpyun_bug6.jpg

修复方案:

判断一下把!这可是钱啊!

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:20

确认时间:2014-01-16 16:13

厂商回复:

感谢您的提供,我们会尽快修复!

最新状态:

暂无


漏洞评价: