支付漏洞简介及靶场演示


一、快捷支付原理

支付漏洞也是属于逻辑漏洞的一种,通常大部分漏洞可以通过过滤来解决,而逻辑漏洞则无法通过简单的过滤来解决。
商户网站接入支付结果有两种方式,一种是通过浏览器进行跳转通知,另一种是服务器端异步通知。

(一)浏览器跳转

基于用户访问的浏览器,如果用户在银行页面支付成功后,直接关闭了页面,并未等待银行跳转到支付结果页面,那么商户网站就收不到支付结果的通知,导致支付结果难以处理。而且浏览器端数据很容易被篡改而降低安全性.(这种方式已经很少了,因为这种方式相当于是:支付宝 给了你一个数据,然后你告诉商家你付了钱,而不是由支付宝直接告诉商家你付了钱)

(二)服务器端异步通知

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


二、常见支付漏洞

相对于其他漏洞来说,支付漏洞应该是大家最喜闻乐见的了。这种漏洞通常不需要进行复杂的代码审计,可以直接抓取数据包进行分析测试。常见的支付漏洞主要有以下几种类型。

(一)修改支付价格

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

(二)修改支付状态

订单完成——未完成(傻傻分不清)
比如有两个订单,A订单完成,B订单-0002未完成
付款时尝试把订单B的单号改成订单A,或者将支付状态改为已支付的状态,欺骗目标服务器。

(三)修改订单数量

这个很好理解,比如一支笔1块,下单的时候抓数据包把数量改成0支,或者-1支(不就等于免费了么?)

(四)修改附属值

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

(五)修改运费支付漏洞

运费金额采用明文传输,可通过修改数据包实现任意修改运费
修改运费案例:http://wy.zone.ci/bug_detail.php?wybug_id=wooyun-2014-079085

(六)越权支付

越权支付一般需要网站有余额功能才会存在,这个大家比较了解(就是有余额功能)。假如数据包中存在诸如user=id,这种传参时,尝试改改id,看看能不能用别人的钱包余额来购买自己的东西。

(七)跳过支付环节

这种方式需要依靠前面说的浏览器跳转。首先抓包找到支付成功访问的页面,然后直接下个单子,复制订单号,然后拼接成功访问的页面
案例:http://wy.zone.ci/bug_detail.php?wybug_id=wooyun-2015-0108184

(八)用多线程来尝试支付漏洞

这是并发的思路。利用条件竞争, 多条线程一起工作,比如说打赏金币,一下子发出100个数据包(PHP支持多线程的东西)。
这种漏洞如何防护呢?可以加一个线程锁,要求一个个线程依次执行,而不是同时执行。

(九)支付漏洞的涉案金额

价格1w的东西 ,你1分钱买了,涉案金额:1w
价格100w的东西,你1分钱买了,涉案金额:100w (督办案件)


三、支付漏洞挖掘和防御方法

(一)支付漏洞的挖掘

  • 1、找到关键的数据包
    可能一个支付操作有三四个数据包,我们要对数据包进行挑选,找到那个核心的数据包。
  • 2、分析数据包
    支付数据包中会包含很多的敏感信息(账号,金额,余额,优惠),要尝试对数据包中的各个参数进行分析。
  • 3、不按套路出牌
    多去想想开发者没有想到的地方,pc端尝试过,wap端也看看,app也试试。

(二)防御方法

  • 1、后端检查每一项值,包括支付状态;
  • 2、校验价格、数量参数,比如产品数量只能为正整数,并限制购买数量;
  • 3、与第三方支付平台检查,实际支付的金额是否与订单金额一致;
  • 4、支付参数进行MD5 加密、解密、数字签名及验证,这个可以有效的避免数据修改,重放攻击中的各种问题;
  • 5、金额超过阈(yu)值,进行人工审核;
  • 6、加密(起码可以筛掉一批不懂技术的),但是加密可能被解密,且加密也可以复用。正常情况下加密算法是由前端决定,因为在传输之前,后端根本没收到信息,而传输的时候就已经是加密过的信息了,而前端的代码都是公开的)。

四、靶场演示

进入封神台支付漏洞靶场:
在这里插入图片描述
首先注册一个账号为admin123,并登陆。
接着开始下单,通过正负数的拼凑,将多件商品的价格互相抵消,当金额为0以后,即可实现0元购物。
在这里插入图片描述
接着点击结算,然后点击提交订单:
在这里插入图片描述
下单成功:
在这里插入图片描述
本靶场为了拿到flag,还需要点击退货。首先找到订单:
在这里插入图片描述
点击退货即可弹出flag:
在这里插入图片描述
提交flag:
在这里插入图片描述


五、小结

本文简单介绍了一下支付漏洞的原理、挖掘及常见的防御方法,并通过靶场的演示,介绍了支付漏洞的利用方法。

  • 0
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值