后台在处理订单的时候,直接获取cookie中的uid,此uid可以伪造成他人的uid,导致可用他人的money付款。
经过测试,虽然自己并不能获得支付成功的积分,但是可以扣除他人账户余额。

漏洞文件\api\tenpay\index.php:

 

$sql=$db->query("select * from `".$db_config["def"]."company_order` where `order_id`='$_POST[dingdan]'");

$row=mysql_fetch_array($sql); //通过订单编号获取点单价格

$userid=(int)$_COOKIE['uid']; //获取cookie中的uid ,此uid可以伪造成别人的uid !!!!


if($_POST['balance']&&$userid){
$c_sql=$db->query("select `pay` from `".$db_config["def"]."company_statis` where `uid`='".$userid."'"); //通过伪造的uid读取出别人的账户余额
$company_statis=mysql_fetch_array($c_sql);
if($company_statis['pay']>=$row['order_price']){ //如果账户余额大于付款金额
$up_sql=$db->query("update `".$db_config["def"]."company_statis` set `pay`=`pay`-'".$row['order_price']."' where `uid`='".$userid."'"); //通过伪造的uid付款
mysql_fetch_array($up_sql);

$up_order=$db->query("update `".$db_config["def"]."company_order` set `order_price`='0'".$invoice_title." where `order_id`='".$row['order_id']."'");
mysql_fetch_array($up_order);
$price=$row['order_price'];
}else{ //如果账户余额小于付款金额
                
$price=$company_statis['pay'];
$up_sql=$db->query("update `".$db_config["def"]."company_statis` set `pay`='0' where `uid`='".$userid."'"); //直接清空账户余额位0
$up_sql_status=mysql_fetch_array($up_sql);

$up_order=$db->query("update `".$db_config["def"]."company_order` set `order_price`=`order_price`-'".$price."'".$invoice_title." where `order_id`='".$row['order_id']."'");
mysql_fetch_array($up_order); 
}

测试流程:

注册一个充了值的账户test2,可用余额为100:

 

phpyun设计缺陷可用别的账户money付款,清空别的账插图

注册一个账户test5,提交一个订单:
 

phpyun设计缺陷可用别的账户money付款,清空别的账插图1

 

phpyun设计缺陷可用别的账户money付款,清空别的账插图2

付款时抓包将cookie中uid改为test2的uid:
 

phpyun设计缺陷可用别的账户money付款,清空别的账插图3

通过test2付款成功:
 

phpyun设计缺陷可用别的账户money付款,清空别的账插图4

如果账户余额小于付款金额会重置账户余额为0,test5提交一个价格很高的订单让test2付款

phpyun设计缺陷可用别的账户money付款,清空别的账插图5

同样抓包修改uid为test2的uid,结果

phpyun设计缺陷可用别的账户money付款,清空别的账插图6

test2的消费记录:

phpyun设计缺陷可用别的账户money付款,清空别的账插图7

 

    上一篇: 乐视MySQL盲注、callback反射型XSS及一处绝对路径泄

    下一篇: phpdisk代码设计缺陷导致SQL注入一枚 - 网站安全
本博客所有文章如无特别注明均为原创。
复制或转载请以超链接形式注明转自起风了,原文地址《phpyun设计缺陷可用别的账户money付款,清空别的账
   

还没有人抢沙发呢~