业务逻辑漏洞之支付逻辑漏洞
- 一、漏洞挖掘介绍
- 二、Web漏洞产生的原因
- 三、业务逻辑简述
- 四、 常见业务逻辑漏洞的功能点
- 五、支付逻辑漏洞
- 5.1、漏洞背景
- 5.2、产生原因
- 5.3、测试方法
- 六、挖到这些漏洞有什么用?
一、漏洞挖掘介绍
漏洞定义:
- 官方定义:漏洞是在硬件、软件、协议的具体实现或系统安全策略上存在的缺陷,从而可以使攻击者能够在未授权的情况下访问或破坏系统。
- 我的定义:只要可以给厂商带来损失的全都是漏洞。
- 常规漏洞:
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、整数溢出。
一般在开发当中,商品的金额都会用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/