网络安全之“0元购”

前言

大家在刷抖音的时候都看见过美国的0元购吧,是不是觉得很刺激,今天我们来给大家详细讲讲0元支付逻辑漏洞是如何产生的,如何能挖到类似的漏洞。

漏洞简述

支付漏洞属于web逻辑漏洞的一种,它是基于web页面所产生的,在众多SRC平台中给出的评级属于高危,因为这种直接关乎到钱财的东西影响范围非常大,一旦受众群体达到十万以上将会给企业带来不可估量的损失,毕竟企业也是需要赚钱的,而这种漏洞通常是通过 篡改价格、数量、状态、接口、用户名等传参,从而造成 小钱买大物 甚至可能造成 0元购买商品 等等,凡是 涉及购买、资金等方面的功能处就有可能存在支付漏洞。

漏洞产生原理

本文所举的漏洞点是在于传参中来体现的,当两个金额值中有一个不同时就会使得传入金额错误,无法达到0元支付的目的,只有当两个金额值相同时,才能按照传入的金额值进行0元支付。这体现了服务器没有对客户端请求的数据金额,数量等敏感信息进行校验导致服务端没有对参数的真实性做校验,没有进行设置token来绑定金额值和商品。

漏洞复现

进入某医院小程序后,进入主页登录授权电子卡后,

81

点击预约挂号,来到挂号页面,随便选一个挂号:

82

我们直接预约好来到支付页面:

83

接下来用burpsuite进行抓包:

85

86

87

此时发现挂号失败,但是我们返回我的-挂号记录,发现待支付挂号订单,我们接下来点击立即支付用burpsuite进行抓包:

88

此处将feeowncost参数改成1(1=0.01),然后进行重放操作(当然修改成0也可以),然后进行重放操作,小程序便调用微信支付接口此时支付金额变为0.01,支付成功后显示挂号成功,此处证明漏洞存在可篡改支付金额漏洞:

87

89

修复建议

金额,以及数量,单价,等支付时需要输入的一些数值,尽量的进行安全过滤与判断,严格控制用户从GET、POST、Cookies等的提交方式去篡改数值,再一个支付的加密算法,尽肯能在程序代码里,服务器端里做过滤。

结语

忙碌的一天又结束了,技术很水,大佬勿喷。。