支付漏洞简介
支付漏洞是 高风险漏洞 也属于 逻辑漏洞,通常是通过 篡改价格、数量、状态、接口、用户名等传参,从而造成 小钱够买大物 甚至可能造成 0元购买商品 等等,凡是 涉及购买、资金等方面的功能处 就有可能存在支付漏洞。
快捷支付原理
商户网站接入支付结果,有两种方式,一种是通过 浏览器进行跳转通知,一种是 服务器端异步通知。
浏览器跳转通知
基于用户访问的浏览器,如果用户在银行页面支付成功后,直接关闭了页面,并未等待银行跳转到支付结果页面,那么商户网站就收不到支付结果的通知,导致支付结果难以处理。而且浏览器端数据很容易被篡改而降低安全性(这种方式数据经过了客户端浏览器,极大的可能性被第三方恶意修改)
服务器端异步通知
该方式是支付公司服务器后台直接向用户指定的异步通知URl发送参数,采用POST或者GET的方式。商户网站接受异部参数的URL对应的程序中,要对支付公司返回的支付结果进行签名验证,成功后进行支付逻辑处理,如验证金额、订单信息是否与发起支付时一致,验证正常则对订单进行状态处理或为用户进行网站内入账等。
常见的支付漏洞
##修改订单金额
支付三步曲——订购、订单、付款
三个步骤当中的随便一个步骤进行修改价格测试,如果前面两步有验证机制,那么你可在最后一步付款时进行抓包尝试修改
金额,如果没有在最后一步做好检验,那么问题就会存在,其修改的金额值可以尝试小数目或者尝试负数。
实例:
https://wy.zone.ci/bug_detail.php?wybug_id=wooyun-2015-0112258
http://wy.zone.ci/bug_detail.php?wybug_id=wooyun-2012-07293
https://wy.zone.ci/bug_detail.php?wybug_id=wooyun-2016-0215059
##重放交易
购买成功后,重放其中的请求,竟然可以多次购买商品。
实例:
https://wy.zone.ci/bug_detail.php?wybug_id=wooyun-2012-05173
https://wy.zone.ci/bug_detail.php?wybug_id=wooyun-2011-03009
##修改商品数量
没有对购买的数量参数进行限制,导致可随意修改,最常见的修改方式是改成 负数或者小数。
实例:
https://wy.zone.ci/bug_detail.php?wybug_id=wooyun-2015-0108134
https://wy.zone.ci/bug_detail.php?wybug_id=wooyun-2012-07471
https://wy.zone.ci/bug_detail.php?wybug_id=wooyun-2012-07738
##修改支付状态
没有对支付状态的值跟实际订单支付状态进行校验,导致点击支付时抓包修改决定支付或未支付的参数为支付状态的值从而达到支付成功。
实例:
https://wy.zone.ci/bug_detail.php?wybug_id=wooyun-2015-0102292
##修改附属值
(1)修改优惠劵金额/数量
(2)修改积分金额
(3)修改运费金额
https://wy.zone.ci/bug_detail.php?wybug_id=wooyun-2015-0156253
https://wy.zone.ci/bug_detail.php?wybug_id=wooyun-2015-0139556
https://wy.zone.ci/bug_detail.php?wybug_id=wooyun-2013-019761
##越权支付
通过修改一些 特殊传参(如:id,username,openid) 来达到用他人的资金来干购买自己的商品。
实例:
https://forum.butian.net/share/1125
##无限制试用
通过修改 特殊传参(如:id,pay,test) 来达到无限制试用。
https://wy.zone.ci/bug_detail.php?wybug_id=wooyun-2016-0188155
##多线程并发
在数据库的余额字段更新之前,同时发起多次兑换积分或购买商品请求,从中获取利益。
详解:
并发请求导致的业务处理安全风险及解决方案
支付漏洞如何挖掘
1、找到关键的数据包
可能一个支付操作有三四个数据包,我们要对数据包进行挑选。
2、分析数据包
支付数据包中会包含很多的敏感信息(账号,金额,余额,优惠),要尝试对数据包中的各个参数进行分。析。
3、不按套路出牌
多去想想开发者没有想到的地方。
4、pc端尝试过,wap端也看看,app也试试
防御方法
1、在后端检查订单的每一个值,包括支付状态;
2、校验价格、数量参数,比如产品数量只能为整数,并限制最大购买数量 ;
3、与第三方支付平台检查,实际支付的金额是否与订单金额一致;
4、如果给用户退款,要使用原路、原订单退回。比如:退押金,按用户原支付订单原路退回;
5、MD5 加密、解密、数字签名及验证,这个可以有效的避免数据修改,重放攻击中的各种问题;
6、金额超过指定值,进行人工审核等。
本文作者:无名草talent, 转载请注明来自FreeBuf.COM
【Hacking黑白红】,一线渗透攻防实战交流公众号
回复“电子书”获取web渗透、CTF电子书:
回复“视频教程”获取渗透测试视频教程;
回复“内网书籍”获取内网学习书籍;
回复“CTF工具”获取渗透、CTF全套工具;
回复“内网渗透”;获取内网渗透资料;
回复“护网”;获取护网学习资料 ;
回复“python”,获取python视频教程;
回复“java”,获取Java视频教程;
回复“go”,获取go视频教程
知识星球
【Hacking藏经阁】知识星球致力于分享技术和认知。
1、技术方面。主攻渗透测试(web和内网)、CTF比赛、逆向、护网行动等;
400G渗透教学视频、80多本安全类电子书、50个渗透靶场(资料主要来自本人总结、以及学习过程中购买的课程)
2、认知方面。副业经营、人设IP打造,具体点公众号运营、抖*yin等自媒体运营(目前主要在运营两个平台4个号)。
如果你也想像我一样,不想35岁以后被动的去面试,那么加入星球我们一起成长。
欢迎加入99米/年,平均每天2毛7分钱,学习网络安全一整年。
▶
▶【渗透实战系列】|44-记一次授权渗透实战(过程曲折,Java getshell)
▶【渗透实战系列】|42-防范诈骗,记一次帮助粉丝渗透黑入某盘诈骗的实战
▶【渗透实战系列】|40-APP渗透测试步骤(环境、代理、抓包挖洞)
▶【渗透实战系列】|35-旁站信息泄露的dedecms站点渗透
▶【渗透实战系列】|33-App渗透 ,由sql注入、绕过人脸识别、成功登录APP
▶【渗透实战系列】|32-FOFA寻找漏洞,绕过杀软拿下目标站
▶【渗透实战系列】|30-从SQL注入渗透内网(渗透的本质就是信息搜集)
▶【渗透实战系列】|29-实战|对某勒索APP的Getshell
▶【渗透实战系列】|27-对钓鱼诈骗网站的渗透测试(成功获取管理员真实IP)
▶【渗透实战系列】|25一次从 APP 逆向到 Getshell 的过程
▶【渗透实战系列】|24-针对CMS的SQL注入漏洞的代码审计思路和方法
▶【渗透实战系列】|18-手动拿学校站点 得到上万人的信息(漏洞已提交)
▶【渗透实战系列】|17-巧用fofa对目标网站进行getshell
▶【渗透实战系列】|15-博彩网站(APP)渗透的常见切入点
▶【渗透实战系列】|12 -渗透实战, 被骗4000花呗背后的骗局
▶【渗透实战系列】|10 - 记某色X商城支付逻辑漏洞的白嫖(修改价格提交订单)
▶【渗透实战系列】|9-对境外网站开展的一次web渗透测试(非常详细,适合打战练手)
▶【渗透实战系列】|8-记一次渗透测试从XSS到Getshell过程(详细到无语)
▶【渗透实战系列】|1一次对跨境赌博类APP的渗透实战(getshell并获得全部数据)
点分享
点收藏
点点赞
点在看
原文始发于微信公众号(Hacking黑白红):【web安全】 逻辑漏洞之支付漏洞
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论