逻辑漏洞 | 支付漏洞学习

  • A+
所属分类:安全文章

快捷支付原理

商户网站接入支付结果有两种方式,一种是通过浏览器进行跳转通知,一种是服务器端异步通知

浏览器跳转

基于用户访问的浏览器,如果用户在银行页面支付成功后,直接关闭了页面,并未等待银行跳转到支付结果页面,那么商户网站就收不到支付结果的通知,导致支付结果难以处理。而且浏览器端数据很容易被篡改而降低安全性

服务器端异步通知

该方式是支付公司服务器后台直接向用户指定的异步通知URL发送参数,采用POST或GET的方式。商户网站接收异部参数的URL对应的程序中,要对支付公司返回的支付结果进行签名验证,成功后进行支付逻辑处理,如验证金额、订单信息是否与发起支付时一致,验证正常则对订单进行状态处理或为用户进行网站内入账等

常见支付漏洞

  • 修改支付的价格

    支付三步曲 —— 订购、订单、付款

三个步骤当中的随便一个步骤进行修改价格测试,如果前面两步有验证机制,那么你可在最后一步付款时进行抓包尝试修改金额,如果没有在最后一步做好检验,那么问题就会存在,其修改的金额值你可以尝试小数目或者尝试负数。
  • 修改支付状态

  • 订单完成 —— 未完成(傻傻分不清)

    A 订单 - 0001 完成 ——B 订单 - 0002 未完成

    付款时尝试把订单 B 的单号给成订单 A

  • 其实也不局限于付钱:各种积分兑换之类也可以采用

  • 修改订单数量

    一支笔 1 块,买 0 支,或者买 - 1 支(不就等于免费了么?)

  • 修改附属值

    优惠劵

优惠劵其基本都是优惠,一般用优惠劵进行消费一般出现在第二个步骤当中:确认购买信息,在这个步骤页面当中,你可以选择相关优惠劵,然后直接修改金额大于或等于商品的价格就可以,或者直接修改其为负值进行尝试,最后进行支付,如果对这点没有加以验证,那么问题就会产生,直接支付成功
  • 例外就是 x 大佬,买商品,优惠券 x27 张(可怕。。。)

  • 越权支付

    这个大家比较了解吧

存在 user=id (123), 这种传参时,尝试改改 id, 尝试用别人的钱包买自己的包包。
  • 无限制试用

    比如试用的参数为 2,正常购买的参数为 1

    那么我们购买参数 2(试用),会发生什么呢?

支付漏洞如何挖掘

如何挖掘

  • 找到关键的数据包

    可能一个支付操作有三四个数据包,我们要对数据包进行挑选。

  • 分析数据包

支付数据包中会包含很多的敏感信息(账号,金额,余额,优惠)要尝试对数据包中的各个参数进行分析。
  • 不按套路出牌

    多去想想开发者没有想到的地方

    pc 端尝试过,wap 端也看看,app 也试试。

防御方法

后端检查每一项值,包括支付状态。校验价格、数量参数,比如产品数量只能为正整数,并限制购买数量与第三方支付平台检查,实际支付的金额是否与订单金额一致。支付参数进行 MD5 加密、解密、数字签名及验证,这个可以有效的避免数据修改,重放攻击中的各种问题金额超过阈 (yu) 值,进行人工审核

超简单靶场

首先注册账号,来到页面。发现几个关键东西,我的订单、购物车、在线充值。

逻辑漏洞 | 支付漏洞学习

平台不让我充值。

逻辑漏洞 | 支付漏洞学习


传参一个负数试试。

逻辑漏洞 | 支付漏洞学习


反向充值失败,会返回

逻辑漏洞 | 支付漏洞学习


再找找其他关于商品的介绍,找到商品这里。

逻辑漏洞 | 支付漏洞学习


直接支付,会弹窗余额不足,我们反向充值,购买负数的数量。

逻辑漏洞 | 支付漏洞学习


钱包贼满。

逻辑漏洞 | 支付漏洞学习


逻辑漏洞 | 支付漏洞学习

SRC逻辑漏洞挖掘详解以及思路和技巧

点赞,转发,在看


原文作者:碎月

如有侵权,请联系删除

逻辑漏洞 | 支付漏洞学习


本文始发于微信公众号(HACK学习呀):逻辑漏洞 | 支付漏洞学习

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: