挖洞技巧:支付漏洞之总结_支付功能点的漏洞有哪些-程序员宅基地

技术标签: WEB安全  


前言

支付漏洞一直以来就是高风险,对企业来说危害很大,对用户来说同样危害也大。就比如我用他人账户进行消费,这也属于支付漏洞中的越权问题。那么支付漏洞一般存在在哪些方面呢,根据名字就知道,凡是涉及购买、资金等方面的功能处就有可能存在支付问题。


0x01 修改支付价格

在支付当中,购买商品一般分为三步骤:订购、确认信息、付款。

那么这个修改价格具体是修改哪一步时的价格呢?在我看来,你可以在这三个步骤当中的随便一个步骤进行修改价格测试,如果前面两步有验证机制,那么你可在最后一步付款时进行抓包尝试修改金额,如果没有在最后一步做好检验,那么问题就会存在,其修改的金额值你可以尝试小数目或者尝试负数。

相关例子:

①:https://bbs.ichunqiu.com/forum.php?mod=viewthread&tid=8236

②:https://bbs.ichunqiu.com/forum.php?mod=viewthread&tid=21478

③:http://www.anquan.us/static/bugs/wooyun-2016-0174748.html

0x02 修改支付状态

这个问题我隐约的遇到过,之前在找相关资料的时候发现了一篇文章讲的是修改支付状态为已支付状态这样的思路,然后勾起了我的回想,这个问题是没有对支付状态的值跟实际订单支付状态进行校验,导致点击支付时抓包修改决定支付或未支付的参数为支付状态的值从而达到支付成功。

这里是一个例子,虽然其文章作者测试失败了,但我觉得思路是非常不错的,例子:

①:https://bbs.ichunqiu.com/forum.php?mod=viewthread&tid=28151

0x03 修改购买数量

在支付的过程中,数量也同时决定着价格,比如:1个数量商品对应的是100,2个数据就是200,那么当你修改这个值数量值为负数时,那么其金额也会变为负数,最后就会导致支付问题的产生。

0x04 修改附属值

这里是我自己想的一个词,比如在很多购买的时候都可以利用积分或者优惠劵等等进行代替金额付款,那么就容易存在问题。在这里我把附属值分为几类进行讲述。

①:修改优惠劵金额

优惠劵其基本都是优惠一半,一般用优惠劵进行消费一般出现在第二个步骤当中:确认购买信息,在这个步骤页面当中,你可以选择相关优惠劵,然后直接修改金额大于或等于商品的价格就可以,或者直接修改其为负值进行尝试,最后进行支付,如果对这点没有加以验证,那么问题就会产生,直接支付成功。

②:修改优惠劵金额及业务逻辑问题

可能你看到这个标题会想到,你不是上一个讲的就是这个修改优惠劵金额的问题嘛?为什么还要再讲一遍这个?请继续看!

之前遇到过这个漏洞,这个漏洞也是逻辑问题导致了成功利用,同样在是在第二部确认购买信息当中有可选择优惠劵进行支付,但是,当你修改其优惠劵值为任意值或负值想要支付的时候,会回显支付失败,或者金额有误等一些提示,可能这时很多白帽子会很失望然后就会去其它点找问题了,但当你找到个人中心,点击订单详情,如果存在这个逻辑问题,那么此时在你刚刚修改优惠劵金额后点击下一步支付的时候,其实这时候就已经产生了订单了,你在订单详情内就可以看到支付金额为0,因为你刚刚修改了优惠劵金额嘛,然后你点击支付就可以支付成功。

当然,这里还要说下小技巧,有可能会支付失败,但是如果你找到的这个问题是一个一般业务分站点,如果有自带的一个钱包功能,那么你就可以利用这个只带的钱包功能去支付这个订单,而不要利用其它支付类型,那么就可以支付成功!

③:修改积分金额

有些网站有积分,比如你消费多少,评论多少就可以拥有一定的积分数量,这个积分可以在你付款的时候进行折扣其订单金额,如果这个没有做好积分金额的校验,那么当你在支付当中选择用积分为账户减一些金额的时候,可以抓包修改其积分金额为任意数或负金额,然后可0元支付成功。

相关例子:http://www.anquan.us/static/bugs/wooyun-2015-0139556.html

0x05 修改支付接口

比如一些网站支持很多种支付,比如自家的支付工具,第三方的支付工具,然后每个支付接口值不一样,如果逻辑设计不当,当我随便选择一个点击支付时进行抓包,然后修改其支付接口为一个不存在的接口,如果没做好不存在接口相关处理,那么此时就会支付成功。

0x06 多重替换支付

以前好像也看到过相关的例子,首先去产生两个订单,这两个订单商品是不一样的,其价格不一样,如果服务端没有做好这相关的验证,那么在支付的过程当中抓包,修改其订单值为另一个订单值,最后支付,这时就可以用订单一的支付价格买到订单而的商品。

0x07 重复支付

这个其实只是支付当中的一个别类,但是这个思路新颖,所以我就列了出来,比如一些交易市场有一类似于试用牌子或者其它,这个试用牌子可以依靠签到获得,而这个牌子的作用可以去试用一些商品,在你进行试用的时候会扣掉你的试用牌子,当你试用完成或者主动取消试用时,试用牌子会返回到账户当中,你知道,签到得到的牌子肯定很少,且如果想试用好一点的商品那么牌子的数量就尤为重要了。

这里的问题就是如果没有进行对订单多重提交的校验,那么就可导致无限制刷牌子,比如,你试用时抓包,然后你每次试用都会产生一个订单号,然后利用刚抓到的数据包进行批量提交,你就可以看到每次提交的订单号不一样,然后这时你再看订单可以看到同一个商品的无数订单,但试用牌子数只扣了你第一个试验时的牌子数,那么这时你申请批量退出试用,那么这么多订单,每退一个就会退相应的牌子数量到账户当中,这就构成了无限制刷得问题。

0x08 最小额支付

在很多白帽子测试支付的漏洞时候,修改的金额往往都是0.01等或者负数,我想说这很容易错失掉一些潜在的支付问题,我就深有体会,在挖掘支付漏洞的过程当中,就遇到过,直到第三次再一次检测时才发现,比如一些网站有金币或者积分什么就相当于支付可以用这些支付,那么在充值的时候,比如:10元对应的积分值为100、50对应的是5000、100对应的是10000。

这个问题如果你在充值时进行修改其支付金额为负数或者0.01等是会显示支付失败的,但是如果你修改其金额为1.00,那么支付就会成功,也就用1元购买到任意值得积分数量了,这是为什么呢?

其实你在测试过程当中细心点就可以很好发现的,这里最低就是1元,1元对应100积分,而你如果修改为0.01,那么对应的积分就是空值了,所以会显示失败,而当你修改为1元,那么1元这个支付接口是存在的,其后面积分数为其它金额的积分数,然后跳转过去支付就会以1元购买到比它多得多的积分数量,也可以是任意积分值。

0x09 值为最大值支付问题

以前也是看到过相关的例子,一些网站比如你购买商品,这里有2个思路修改值,1是直接修改支付金额值为最大值,比如999999999,或者修改附属值,如优惠卷,积分等为999999999,如果这里逻辑设计有问题,那么其支付金额会变为0。

0x10 越权支付

这个问题很早之前有过,现在可能很少存在这类问题,在支付当中会出现当前用户的ID,比如:username=XXXXX,如果没有加以验证,其支付也是一次性支付没有要求输入密码什么的机制,那么就可以修改这个用户ID为其它用户ID,达到用其他用户的账号进行支付你的商品。

0x11 无限制试用

一些网站的一些商品,比如云系列产品支持试用,试用时期一般为7天或者30天,一个账户只能试用一次,试用期间不能再试用,但如果这个试用接口会做好分配那么很容易导致问题的发生。

这也是我遇到过的例子,比如:在支付的时候它URL后面的支付接口是3,而试用接口是4,那么此时你已经使用过了,复制下确认试用时的URL,修改后面的支付接口为3,那么此时就会调用购买支付接口,但是由于你本身这个产品就是试用的,其相应值绑定了这个试用商品,那么金额就肯定是0,那么最后点击支付,你就可以看到支付成功,试用成功,又重复试用了一次,然后他们的试用时间会累加在一起,这就导致了可无限制购买任何产品了。

0x12 修改优惠价

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

支付问题的相关分析文章:

①:http://wooyun.jozxing.cc/static/drops/papers-345.html

②:http://xdxd.love/2015/12/02/%E6%94%AF%E4%BB%98%E6%BC%8F%E6%B4%9E%E6%80%BB%E7%BB%93/

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44522540/article/details/115399446

智能推荐

配置OpenCV3+VS2017发生错误:无法打开文件 opencv_world345d.dll 解决方案_无法打开文件“opencv_world345d.lib”-程序员宅基地

文章浏览阅读9.1k次,点赞10次,收藏8次。配置OpenCV3+VS2017的步骤:Visual Studio 2017 + OpenCV 3.4.1 全新安装与配置及可能遇到的问题解决但是我在按照该流程配置完成以后却报了错误:LNK1104 无法打开文件"opencv_world345d.dll"原因是我们在进行配置时错把".lib"写成了".dll"我的解决方案是:在属性管理器界面配置"Microsoft.Cpp.x64.u..._无法打开文件“opencv_world345d.lib”

pandas dataframe 提取行和列_pd.dataframe 输出第几列-程序员宅基地

文章浏览阅读10w+次,点赞57次,收藏229次。import pandas as pddata = pd.DataFrame({'a':[1,2,3],'b':[4,5,6],'c':[7,8,9]})提取列单列data['a']多列data[['a', 'b']]使用 .loc或者 .iloc 提取第一个参数是行,第二个参数为列.loc为按标签提取, .iloc为按位置索引提取data..._pd.dataframe 输出第几列

Vue在启动项目时报错 ValidationError: webpack Dev Server Invalid Options-程序员宅基地

文章浏览阅读2.2k次。#Vue项目开发报错欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:全新的界面设计 ,将会带来全新的写作体验;在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 _webpack dev server invalid options

android驱动开发书籍推荐,2024年Android春招面试经历-程序员宅基地

文章浏览阅读287次,点赞3次,收藏3次。都说三年是程序员的一个坎,能否晋升或者提高自己的核心竞争力,这几年就十分关键。技术发展的这么快,从哪些方面开始学习,才能达到高级工程师水平,最后进阶到Android架构师/技术专家?我总结了这 5大块;我搜集整理过这几年阿里,以及腾讯,字节跳动,华为,小米等公司的面试题,把面试的要求和技术点梳理成一份大而全的“ Android架构师”面试 Xmind(实际上比预期多花了不少精力),包含知识脉络 + 分支细节。

浅谈分布式光伏电站的运维管理-程序员宅基地

文章浏览阅读610次,点赞18次,收藏18次。十四五”期间,随着“双碳”目标提出及逐步落实,本就呈现出较好发展势头的分布式光伏发展有望大幅提速。就“十四五”光伏发展规划,国家发改委能源研究所可再生能源发展中心副主任陶冶表示,“双碳”目标意味着国家产业结构的调整,未来10年,新能源装机将保持在110GW以上的年增速,这里面包含集中式光伏电站和分布式光伏电站。相较于集中式电站来说,分布式对土地等自然资源没有依赖,各个地方的屋顶就是分布式电站的形成基础,在碳中和方案的可选项中,分布式光伏由于其灵活性必将被大力发展,目前已有河北、甘肃、安徽、浙江、陕西等

如何搭建反欺诈策略与模型-程序员宅基地

文章浏览阅读1.7k次。转载自https://www.jianshu.com/p/fd447413e335信用风险与反欺诈哪个更加重要?为什么是先讲策略再谈模型?一个完整的反欺诈流程如何搭建?如何说服CEO接受模型测试成本?在一本财经商学院举办的第二期风控闭门课程上,天创信用首席科学家陈黎明一一做出解答。以下是她现场分享的部分干货:01基本概念今天我讲的主要课题是“反欺诈策略和模型”。为什么要把策略放前面呢?因为不管是拍脑袋决定,还是通过数据挖掘出来,反欺诈一般是先有策略,然后通过数据的积累,慢慢去构建模型。首先讲一下

随便推点

在cmd的命令下 用Mysql中建立一个表_用cmd做表格-程序员宅基地

文章浏览阅读5.2k次。1, mysql -uroot -pxxxx //登陆数据库2, show databases; //查看数据库,例如要在test库中建表3, use test;//进入test4, create table users( //例如要建立users表,下面是建立字段5, id int(10) unsigned not null auto_inc_用cmd做表格

2024 Android开发项目开发必备底层技术知识点整理,面试了几家公司都被拒绝了-程序员宅基地

文章浏览阅读725次,点赞10次,收藏20次。理解RTTI在Java中的工作原理,首先需要知道类型信息在运行时是如何表示的,这是由Class对象来完成的,它包含了与类有关的信息。Class对象就是用来创建所有“常规”对象的,Java使用Class对象来执行RTTI,即使你正在执行的是类似类型转换这样的操作。只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。真正最能锻炼能力的便是直接去阅读源码,不仅限于阅读各大系统源码,还包括各种优秀的开源库。

线索二叉树——找前驱、后继_线索二叉树查看节点前驱后继-程序员宅基地

文章浏览阅读2.6k次,点赞5次,收藏29次。一个二叉树被线索化之后,一个节点的前驱或后继会存在两种情况,1、tag=1,有明确的线索化前驱或后继,2、tag=0,只存在左右孩子,但是没用明确的线索化前驱后继,需要分析//线索二叉树结点定义int data;_线索二叉树查看节点前驱后继

解决VC++2010&&VS2010无法调试&&调试无法进入断点&&无法命中断点的问题_vc++2010调试但不执行-程序员宅基地

文章浏览阅读2.1k次。对于这个问题只要修改注册表,方法如下:开始->运行->输入regedit->HKEY_LOCALMACHINE -> SOFTWARE -> Microsoft -> Internet Explorer -> Main 增加DWORD键TabProcGrowth,值为0就行!_vc++2010调试但不执行

JDBC-ODBC数据库连接_jdbc:odbc:-程序员宅基地

文章浏览阅读2k次。我们都知道,任何一个项目都离不开数据库,常见的数据库主要有(MySQL,sql Server,Oracle,Access),我们的程序在操作数据库之前,都要进行的一个步骤,就是链接到我们的数据库,所以这次因为自己在学习这个,所以写个文章,一来希望如果我哪里写的不好的话,可以对我有指点,我会进行改正,二来是可以方便自己以后复习。不多说其他话,开始写笔记ODBC链接到数据库的操作分为4个步骤:_jdbc:odbc:

复现一个老漏洞 Discuz!7.2 faq.php 注入漏洞 分析原理_discuz 7.2 faq.php 注入漏洞全自动利用工具-程序员宅基地

文章浏览阅读4k次。源码~ http://pan.baidu.com/s/1gfkvJrXpoc/faq.php?action=grouppermission&gids[99]=%27&gids[100][0]=)%20and%20(select%201%20from%20(select%20count(*),concat(version(),floor(rand(0)*2))x%20fr..._discuz 7.2 faq.php 注入漏洞全自动利用工具

推荐文章

热门文章

相关标签