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

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

一、漏洞挖掘介绍

漏洞定义:

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

http://wooyun.2xss.cc/

二、Web漏洞产生的原因

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

三、业务逻辑简述

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

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

称为业务逻辑处理。

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

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

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

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

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

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

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

五、支付逻辑漏洞

5.1、漏洞背景

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

5.2、产生原因

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

5.3、测试方法

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

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

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

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

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

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

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

修改支付对应商品的id:

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

请求重放:

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

4、整数溢出。

bash 复制代码
一般在开发当中,商品的金额都会用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/
相关推荐
运维栈记14 分钟前
虚拟化网络的根基-网络命名空间
网络·docker·容器
五仁火烧42 分钟前
生产环境中配置了接口3000后,不能启动,改成8080后就可以
linux·网络·安全·vue
橙露1 小时前
国产PLC与进口PLC全面对比分析:技术、市场与未来趋势
运维·网络
chilavert3181 小时前
技术演进中的开发沉思-302计算机原理:网络基础
网络·计算机原理
Hellc0072 小时前
Docker网络冲突排查与解决方案:完整指南
网络·docker·容器
眠りたいです2 小时前
Docker核心技术和实现原理第二部分:docker镜像与网络原理
运维·网络·docker·容器
闲人编程2 小时前
消息通知系统实现:构建高可用、可扩展的企业级通知服务
java·服务器·网络·python·消息队列·异步处理·分发器
Xの哲學2 小时前
Linux Platform驱动深度剖析: 从设计思想到实战解析
linux·服务器·网络·算法·边缘计算
ikkkkkkkl2 小时前
计算机网络:物理层
网络·计算机网络·物理层
镜中人★2 小时前
408计算机组成原理考纲知识点
网络·笔记