“薅羊毛”漏洞分析 | 我是如何到处“混吃混喝”的
https://www.freebuf.com/vuls/149251.html
*本文中涉及到的相关漏洞已报送厂商并得到修复,本文仅限技术研究与讨论,严禁用于非法用途,否则产生的一切后果自行承担。
*本文原创作者:小石,本文属FreeBuf原创奖励计划,未经许可禁止转载
不多哔哔 先看图 无图无真相 (๑•̀ㅂ•́)و✧。
下面就跟大家分享交流一下经验,漏洞均已上报给相应的厂商,无法透露详细细节,见谅。
一、某餐饮店的储蓄卡 卡里有800元可到任意分店进行消费
该储蓄卡分4种面值 60、200(180元购)、400(350元购)、800(650元购)。
因为没有购物车功能直接进行购买,负数漏洞是无法利用的了。
那么就分析一下购买的数据包,看看是否进行了价格、优惠等价格的传递。
saleAmt储蓄卡的单价 totalQty购买数量 totalAmt总价。
尝试修改了单价以及总价无果 对价格做了检测。
最后发现修改cardType的值 其余参数不动 貌似能以低价购买高价的卡。
选择购买60元的卡 –> 提交订单 –> 拦截数据包修改cardType的值为800的 –> 付款60 –> 拿到800元的卡。
此漏洞产生的原因
该程序员还是有安全意识的,对传递的价格参数做了检测。
但经过fuzz以及漏洞利用成功之后发现他仅仅将传递的价格与数据库中的价格进行比对,如果存在则放行,不存在则阻止。
以60元的举例:传递saleAmt:60 –> 查询数据库中价格列是否含有60?通过并提示付款:阻止。
二、某个厂商的活动 参与即可领取XXX电子券
开始我还以为只是个活动噱头,没那么容易拿到电子券的。
但我控制不住自己的好奇心啊,打开了burpsuite设置好了代理。
进入活动进行参与,没想到真的直接跳转到了领取电子券的页面,良心啊!
我将成功领取电子券的包抓了下来,放到Repeater进行分析,一个get包,大致如下:
GET /?a=0001&b=f
Host: 127.0.0.1
XXX: XXXX
...
我将包原封不动的重放,响应200但是没有回显,成功领取的那个数据包回显了电子券的过期日期的。
a参数一看就知道代表是电子券的类型 b参数看不出是什么,别的地方也没啥好改的,就随便改个值看看吧。
没想到一改这b参数的值就回显了电子券的过期日期,我都惊呆了w(゚Д゚)w。
打开我的奖励,确认多了一张电子卷,也查看了卷码,跟刚领的不同。
只要b参数的值之前没有提交过,就可以成功领取一张,光数字组合起来的就拿到手软好嘛..
此漏洞产生的原因
不详..我也不知道为啥会这样,还请大佬多指教。
三、想必大家非常熟悉了,基本随处可见的烤鱼店
经过一天刻苦的学(shen)习(you)后,大佬们带我去了烤鱼,到了店里我就跟大佬们说。
“有没有可能找到漏洞免费吃啊?” 大佬无情回复”怎么可能,哪会有漏洞。”
当时手上也没电脑,美滋滋的吃完就溜了。
过了两天闲来无事,就去看了看他的自助点餐系统,发现存在负数漏洞 开始还很激动。
但是需要到店跟店员确认的,所以并没什么用,但紧接着又发现他的一个商城,有卖一些菜品的卡卷。
进入商城页面一个购物车的图标就吸引了我,直接尝试负数漏洞,构造出最低价,付款,最后我仅用4元就买到了一张烤鱼的卷!
此漏洞产生的原因
没有对商品的数量进行校验是否正常导致结算出问题,例如A商品单价10元,B商品单价9元。
系统进行结算的公式: 单价数量 + 单价数量 = 总价
假如我添加了1个A、-1个B到购物车,
总价 = 110 + (-1)9 = 10 – 9 = 1 元。
感谢观看,小小杂技,献丑了,各位大佬请多多指教(。_。)
*本文原创作者:小石,本文属FreeBuf原创奖励计划,未经许可禁止转载