文档章节

实战经验丨业务逻辑漏洞探索之活动类漏洞

o
 osc_y8yehimr
发布于 2019/03/20 14:15
字数 1698
阅读 5
收藏 0

行业解决方案、产品招募中!想赚钱就来传!>>>

活动类的漏洞大家一定听说过,比如之前拼多多APP出现重大BUG,用户可以在任何没有限制的情况下无限领取100元无门槛优惠券。据不完全统计,一晚上的时间直接导致了拼多多200多亿的优惠券面额损失。

 

其实很多平台都会通过参与活动赢取奖励的方式来吸引用户,或是使用资金、虚拟货币、积分等进行交易,然而如果这些功能没有设计好,会很容易造成重大的经济损失,比如像上述的拼多多案例。

那么今天我们就来学习一下业务逻辑漏洞探索之活动类漏洞的相关内容,希望对大家有所帮助。

注:本文中提供的例子均来自网络已公开测试的例子,仅供参考。

我们测试的时候可以分为以下几种测试场景进行测试:

 

一、重放攻击

重放攻击是指攻击者发送一个目的主机已接收过的包,来达到欺骗系统的目的。在交易活动类功能里,除了进行简单的重放攻击进行获利外,对于大量的请求同时发起时,如果没有进行很好的处理,那就可能存在条件竞争漏洞。

1、无限获利

举个例子:

a) 某地方运营商举办让红包飞活动,中奖后可使用活动码兑换奖品。

 

 

b) 还未兑换前的流量。

 

 

 

c) 输入使用码可兑换50M流量。

 

d) 可成功兑换流量。

 

e) 抓取兑换流量的数据包进行重放可无限次兑换流量。

 

2、条件竞争

举个例子:

a) 某App 推出了新人领红包活动,新号可以免费领一次红包,使用抓包工具进行抓取领红包的数据包。

b) 然后同时并发多个数据包。

 

c) 由于没有做好大量并发请求的处理,可同时领到多个红包。

 

二、数据篡改

在交易活动类功能中,经常会涉及买卖、转账或者是兑换涉及资金、虚拟币、积分等,需要注意防范通过参数篡改进行非法获利。常见的两种篡改方式分别为金额篡改和数量篡改。在测试过程要注意交易、兑换过程中的商品单价、商品总价是否可以突破极限改为0、1、负数,尝试对金额进行篡改;在兑换过程中也要注意对数量参数的测试,尝试是否可免费或较低金额兑换大量积分、虚拟币等。

1、金额篡改

举个例子:

a) 某旅游网站的机票购买功能存在任意金额购买漏洞。

 

b) 搜索国际航班。

 

c) 选择一班机票进行购买,此时可看见金额至少为1778。

 

d) 提交购买订单。

 

e) 使用抓包工具进行抓包,可发现数据包中的totalPrice是机票价格。

 

f) 将机票价格修改为0.01,发现可以用0.01的价格购买任意机票。

 

2、数量篡改

  • 将数量改大

a) 某APP可进行签到抽奖获得阅币(50阅币相当于1块钱)

b) 首先得到自己手机签到和抽奖时候的链接,下次可以直接用浏览器访问链接签到、抽奖。抽奖时候的链接类似这样的(XXX是替代字符):

http://xxx.xxx/zybook/u/p/user.p ... 27XXXX74&p2=108

c) 抽奖过程是由js控制的,结果已经设定好了是6,就是会抽到6个阅币,是由count这个变量定义的。只要用浏览器打开,修改这个变量即可。

 

 

d) 这个变量应该是在上一步的时候生成的链接定义的,从链接中的变量传递过来,所以可以直接访问链接:

http://xxx.xxxx/zybook/u/p/user. ... 5&p1=1307271227

e) 注意,里面的price=5100表示这一次将抽到5100阅币,设置多少得多少,目前测试7位数可行。

 

 

 

将数量改为负数

举个例子:

a) 使用某购物网站进行购物,选取商品后进行抓包。

 

 

b) 修改数量为-1。

 

c) 网站里出现未支付订单,发现金额显示-299。

 

d) 直接点击付款,发现可以付款成功。

 

e) 可发现余额增多。

 

三、流程绕过

客户端测试活动业务是否存在漏洞,能否在未满足活动参与条件的情况下参与活动或获得收益常见的客户端验证方法。常见的活动限制绕过有两种,一种是次数限制绕过,一种是时间限制绕过。

1、次数限制绕过

举个例子:

a) 登入活动页面输入兑换码就可以兑换省内100M流量,当第二次输入同一个兑换码的时候会显示已兑换。

 

b) 查看历史找到了兑换的网页,可以跳过限制直接再次兑换。

地址:http://xxx.xxx/xxxx/web/info2.jsp?coupon=2&PrizeID=兑换码

 

c) 又发现兑换码只是个摆设,可以直接输入利用上面地址。输入11位数或英文大写字母就又可以兑换。

 

d) 后来继续查看那个地址发现info2.jsp是二等奖的页面,改成info1.jsp,就是一等奖的领奖页面。

 

2、时间限制绕过

a) 某站举办活动,有个摇奖机,摇一次之后需要在下一个小时才能摇奖。

 

b) 发现抽奖的验证放在前端,只是通过禁用抽奖按钮控制抽奖。将抽奖的方法搬到“查看中奖名单”的onclick下,每次点击“查看中奖名单”就可以触发摇奖机摇奖。

 

四、修复建议

以上就是对活动类漏洞的归类,如果你也有别的归纳也可以一起探讨探讨,以下就是对于交易活动类漏洞修复的一点建议:

1、交易类业务应充分考虑业务风险,应充分考虑流程和数据的防泄密、防篡改、防重放等安全问题。

2、交易类业务的关键参数,如单价、金额等关键参数必须在服务端生成或进行二次校验,不得直接使用用户可控数据。

3、活动类功能所有验证及限制都应在服务端,不应该相信客户端提交的信息。

以上是今天的全部内容,小伙伴们学会了吗?

 
o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
Netty那点事(三)Channel与Pipeline

Channel是理解和使用Netty的核心。Channel的涉及内容较多,这里我使用由浅入深的介绍方法。在这篇文章中,我们主要介绍Channel部分中Pipeline实现机制。为了避免枯燥,借用一下《盗梦空间》的...

黄亿华
2013/11/24
2W
22
访问安全控制解决方案

本文是《轻量级 Java Web 框架架构设计》的系列博文。 今天想和大家简单的分享一下,在 Smart 中是如何做到访问安全控制的。也就是说,当没有登录或 Session 过期时所做的操作,会自动退回到...

黄勇
2013/11/03
3.4K
6
浅入浅出Android(003):使用TextView类构造文本控件

基础: TextView是无法供编辑的。 当我们新建一个项目MyTextView时候,默认的布局(/res/layout/activity_main.xml)中已经有了一个TextView: <TextView 运行效果如下: 修改其文本内容...

樂天
2014/03/22
604
1
漏洞检测工具--Peach Fuzzer

Peach是一种用Python编写的 Fuzzer。这种工具有助于发现并公开许多漏洞,并认为是黑客和安全团体中最流行的工具之一。为了利用Peach框架,必须创建Phthon脚本,脚本 中包含了在服务器上执行的...

匿名
2013/02/06
8.7K
1
Flash 皮肤样式--Windows8UIStyle

Windows8UIStyle 模仿 Windows 8 的桌面用户界面,使得 FlashSwing 应用程序在 Windows 8 系统中拥有与传统应用程序一致的用户界面。 Windows8UIStyle 对 FlashSwing 默认主题的修改: 提供和...

Gregary
2013/02/19
1.3K
1

没有更多内容

加载失败,请刷新页面

加载更多

代理服务器和反向代理服务器之间有什么区别? - What's the difference between proxy server and reverse proxy server?

问题: 代理服务器和反向代理服务器有什么区别? 解决方案: 参考一: https://stackoom.com/question/wRc/代理服务器和反向代理服务器之间有什么区别 参考二: https://oldbug.net/q/wRc/W...

技术盛宴
28分钟前
16
0
第八讲:配置外界可以访问虚拟机里面的HDFS

本节通过配置实现外界访问虚拟机Centos6.4里面的HDFS。为后续的java读写HDFS做准备 步骤有: 1、修改主机Windos7的网络配置 2、修改虚拟机Centos6.4里面的网络配置 3、修改虚拟机Centos6.4里...

刘日辉
46分钟前
26
0
OSChina 周四乱弹 —— 不劳而获的饭好吃么?好吃!非常好吃!

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 小小编辑推荐:《世界上不存在的歌 (2020重唱版)》- 陈奕迅 《世界上不存在的歌 (2020重唱版)》- 陈奕迅 手机党少年们想听歌,请使劲儿戳(这...

小小编辑
今天
31
2
从 GPU、TPU,到 Web 端、移动端,深度学习框架部署训练开始变简单

本文作者:o****0 早些时候的统计显示,今年3月,深度学习框架集中爆发。5月,有人发布可以直接在 iphone11上训练神经网络的开源项目。日前,百度开源国内首个可直接运行在 Web 端的深度学习...

百度开发者中心
昨天
16
0
如何从Git存储库中删除文件? - How can I delete a file from a Git repository?

问题: I have added a file named "file1.txt" to a Git repository. 我已将名为"file1.txt"的文件添加到Git存储库中。 After that, I committed it, added a couple of directories called......

富含淀粉
今天
31
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部