• [典型漏洞分享]多线程同步问题导致越过程序限制


    在涉及到钱的问题时,多线程同步问题一定要重点考虑,如果处理不当可能造成无法预料的损失。

    YS 电商优惠券漏洞可以使一张优惠券被多次使用来生成订单【高】

    问题描述:

             用户在YS电商可以使用我们提供的优惠券购买设备,并得到一定金额的优惠,一张优惠券只能使用一次,在提交生成订单的接口时需要带上该优惠券号码,后台系统会根据该优惠券的类型自动减少额度并最终生成订单,但该接口在后台未做并发同步处理,导致一张优惠券可以使用多次并最终生成多个用于支付的订单。

    测试步骤:

    1、  登录YS MALL,选择需要购买的设备CX(此处CX价格为880,优惠券优惠额度为300RMB),并进入购物车提交订单,如图所示:

    clip_image002

    2、  在订单信息中使用使用优惠券,如下图所示:

    clip_image004

    clip_image006

    3、  提交订单并拦截生成订单请求,转入burp intruder,设置相关参数后,发起快速请求,可以看到有4个请求被成功处理,如图所示:

    clip_image008

    4、  转入“我的订单”页面,可以看到成功生成4个订单,并且每个订单都成功地使用了同一个优惠券,如下图所示:

    clip_image010

    5、  查看后台优惠券使用记录也验证了这一点,如图:

    clip_image012

    问题扩展:

             理论上所有的接口都有可能出现此类问题,对于牵涉到敏感业务的接口可能会造成不可预料的后果。

    解决建议:

    1、  处理代码增加同步锁做并发同步处理。

  • 相关阅读:
    HTTP RFC解析
    Symfony框架的笔记
    Swoole学习总结1
    PHP Socket 学习笔记一
    Js解决解除多次Ajax请求的事件
    Python 操作串口
    python 实现微信自动回复和好友签名分析
    杂谈1
    Vue.js 功课1
    微信API demo
  • 原文地址:https://www.cnblogs.com/fishou/p/4201968.html
Copyright © 2020-2023  润新知