业务逻辑漏洞之支付逻辑漏洞

业务逻辑漏洞之支付逻辑漏洞

  • 一、漏洞挖掘介绍
  • 二、Web漏洞产生的原因
  • 三、业务逻辑简述
  • 四、 常见业务逻辑漏洞的功能点
  • 五、支付逻辑漏洞
    • 5.1、漏洞背景
    • 5.2、产生原因
    • 5.3、测试方法
  • 六、挖到这些漏洞有什么用?

一、漏洞挖掘介绍

漏洞定义:

  • 官方定义:漏洞是在硬件、软件、协议的具体实现或系统安全策略上存在的缺陷,从而可以使攻击者能够在未授权的情况下访问或破坏系统。
  • 我的定义:只要可以给厂商带来损失的全都是漏洞。

业务逻辑漏洞之支付逻辑漏洞_第1张图片

  • 常规漏洞:

http://wooyun.2xss.cc/
业务逻辑漏洞之支付逻辑漏洞_第2张图片

二、Web漏洞产生的原因

主要是服务端对客户端发送的请求没有做严格的验证处理,导致客户端可以发起有害的请求,从而导致漏洞产生。

业务逻辑漏洞之支付逻辑漏洞_第3张图片

三、业务逻辑简述

  • 业务逻辑:不同的项目有不同的功能,这些功能需要不同的代码实现,实现这些核心功能的代码就叫业务逻辑。

比如让你实现一个功能,给你两个数,让你获取它的和。你所写的"如何才能获得任意给定的两个数的和"这个程序的实现过程即可
称为业务逻辑处理。

  • 我们可以这样的理解,一个产品的实现,总会有很多逻辑包括在内,比如购物网站,他需要的功能可以分为两个个大类,第一类是前台:包括商品展示、商品分类搜索、商品购买以及个人用户管理、用户注册、用户登录处理、用户个人资料编辑、收获地址管理、订单管理等。第二类就是后台:比如网站后台管理 、商品管理、订单处理、相关反馈处理等。

比如我们用户想要在京东或者当当网买一本书,是不是首先要注册一个账号,注册完成后进行登录,登录后就可以将我们想要买的书加入购物车,然后结算生成订单,之后基于这个订单付款,付完款之后订单就提交成功了。

  • 业务逻辑漏洞:是指开发者/设计者在开发过程中,由于代码逻辑不严或者业务逻辑不严,导致一些逻辑分支不能正常处理或处理错误,而造成的一系列可以被攻击者加以恶意利用的漏洞。

  • 或者说程序员在编写程序时,只考虑了常规的操作流程,即“当在A情况下,就会出现B,此时执行C即可”,但是开发者却没有考虑当用户执行了意料之外的X时会发生什么。这种对于异常情况的欠考虑,最终导致了安全漏洞的产生。业务逻辑漏洞是通过相对合法的方式来达到目的的。当然了这个合法不是说我们可以随意利用这些漏洞去投机取巧犯法,而是这个漏洞它所提交的数据包跟其他比如sql注入、xss等漏洞相比是没有危害性的,不会引起防护设备也就是waf的注意。

  • 业务逻辑漏洞是通过相对合法的方式来达到目的的。当然了这个合法不是说我们可以随意利用这些漏洞去投机取巧犯法,而是这个漏洞它所提交的数据包跟其他比如sql注入、xss等漏洞相比是没有危害性的,不会引起防护设备也就是waf的注意。

四、 常见业务逻辑漏洞的功能点

业务逻辑漏洞之支付逻辑漏洞_第4张图片

漏洞发现方法:确定业务流程—>寻找流程中可以被操控的环节—>分析可被操控环节中可能产生的逻辑问题—>尝试修改参数触发逻辑问题。

五、支付逻辑漏洞

5.1、漏洞背景

随着互联网的发展,生活变得越来越方便,往日需要我们跋山涉水购买的物品,如今只要在网上下个订单就可以送到家中。网上购物给我们带来极大的便利的同时也带来了安全风险,而支付漏洞就是影响我们网上购物的安全风险之一。

5.2、产生原因

开发人员往往会为了方便,直接在支付的关键步骤数据包中直接传递需要支付的金额。而这种金额后端没有做校验,传递过程中也没有做签名,导致可以随意篡改金额提交。只需要抓包看到有金额的参数修改成任意即可。

5.3、测试方法

  • 大米CMS靶场:http://47.109.71.232:10001/
    1、在购买产品过程中修改产品数量、价格;

在进行支付订单的时候,可以修改物品的数量来进行操作,可以通过支付一件的价格购买多件,或者修改成负数进行增加资金。

  • 特殊情况:修改小数点、整数溢出、总商品价格为正

2、在支付时修改总价格或者优惠价格;

利用:抓包修改价格参数的内容,在支付当中,购买商品一般分为三步骤订购、确认信息、付款,在这三个步骤中都有可能存在漏洞,金额可以尝试修改小额或者修改负。

  • 特殊情况:
    1.总商品价格整数溢出
    2.价格小数点溢出

3、订单生成后,编辑订单把A商品的价格改成B商品的价格,实现低价支付。

修改支付对应商品的id:

  • 通过修改商品对应的d号,可以用低价购买高价格的商品。

请求重放:

  • 购买成功之后,继续重放请求,可以让购买的商品一直增加。购买成功之后,会有一个银行对商户网站跳转的过程,如果反复进行操作,有几率会导致商品反复购买和增加,但是不需要付更多的钱。

4、整数溢出。

一般在开发当中,商品的金额都会用int 型来定义,那么 int 的最大值为2147483647,可以尝试修改为2147483648。看是否造成整数溢出,有可能支付状态异常,从而导致支付成功。

5、修改附属优惠/状态

  • 修改优惠券金额
  • 修改积分金额
  • 无限制试用
  • 修改优惠价
  • 优惠券设置错误,出现优惠券叠加
  • 优惠券id遍历

不然一些商品有优惠券,优惠多少多少,那么在支付时抓包,修改这个优惠价就可造成支付问题的产生。

6、提现/充值类型:

  • 提现负数
  • 提现整数溢出
  • 提现多位小数点(假设比如服务器只能识别到0.00你支付了0.049元四舍五入给你充值了0.05元)

六、挖到这些漏洞有什么用?

可以提交到SRC(安全应急响应中心),能够获得相应的赏金

  • SRC平台:https://www.anquanke.com/src
  • 漏洞盒子:https://www.vulbox.com/projects/list
  • 补天:https://www.butian.net/Reward/plan/1

国外赏金平台:

  • intigriti:https://www.intigriti.com/
  • HackerOne:https://hackerone.com/
  • Bugcrowd:https://www.bugcrowd.com/
  • Cobalt:https://cobalt.io/
  • Bountysource:https://bountysource.com/
  • Bounty Factory:https://bountyfactory.io/
  • Coder Bounty:http://www.coderbounty.com/
  • FreedomSponsors:https://freedomsponsors.org/
  • FOSS Factory:http://www.fossfactory.org/
  • Synack:https://www.synack.com/
  • HackenProof:https://hackenproof.com/
  • Detectify:https://cs.detectify.com/

你可能感兴趣的:(web安全,学习,网络,业务逻辑,支付逻辑)