0×01 看见你很高兴

做了一个近期遇到的逻辑漏洞思维导图,再拿几个案例跟大家分享交流一下。

0×02 思维导图

分享一个近期遇到的逻辑漏洞案例

0×03 实际案例

一、修改优惠券金额

某系统提供了在线购买套餐的功能,新用户都可领取到一张20元的优惠券。先是尝试了商品数量漏洞,确实存在该问题,但构造不出低价,都是百元以上的价格,遂分析一下提交订单时的数据包。

一眼锁定了 couponInstance 这个参数,代表的就是优惠券的值,开始仅修改了 couponInstance 的值就放行了包,回显支付失败。

分享一个近期遇到的逻辑漏洞案例

经过几次测试之后,得到只要符合这么一个公式就能成功跳转支付: 总价 – 优惠券金额 = 付款金额

也就是图中的红字

total - couponInstance = piadOther

分享一个近期遇到的逻辑漏洞案例

修改couponInstance值为879,paidOther值为1,totalFel保持原价880不变,放行数据包即可成功1元购买。

分享一个近期遇到的逻辑漏洞案例

二、修改充值所需付金额

某店系统提供会员充值的功能,金额存储到电子会员卡内。先把充值的流程走了一边,分析了下数据包,最后成功0.01充值任意金额。

分享一个近期遇到的逻辑漏洞案例

分享一个近期遇到的逻辑漏洞案例

关键就在开头的两个数据包,猜测程序逻辑如下:

用户输入充值的金额 2000 –> 服务器接收到充值2000的请求,等待用户付款成功即充值2000。

发送订单信息(其中包含价格参数)–> 付款 –> 服务器接收到付款成功的请求,为用户充值2000。

那么就大概可以达到一个类似于欺骗的方法,告诉服务器我要充值2000,实际我只付款1分钱,但我确实是付款成功了,服务器接收到付款成功就充值了2000。

分享一个近期遇到的逻辑漏洞案例

QQ截图20171019123211.png

三、修改充值赠送金额的id

某系统会员充值功能,多充多送,充1000送100,充10000送3500,最后达到充1块钱可获得3500的赠送金额。

分享一个近期遇到的逻辑漏洞案例

就四个参数,关键就在于money参与rule_id

这里money是充值的金额,也是付款的金额。

rule_id 对应的就是充值赠送的规则,大概如图所示

分享一个近期遇到的逻辑漏洞案例

这里就将money修改为最低值,这个系统不允许money<1,所以最低只能填1了。

rule_id改为充值赠送3500的id值,包放行,付款1元成功获得3500的赠额。

分享一个近期遇到的逻辑漏洞案例

0×04 番外

Brupsuite、Fillder手机抓包设置 从Http –> Https

手机需要和电脑连接到同一个wifi下,然后在burpsuite做如下设置,端口可自行更改,这里以ios举例,android也基本一样。

分享一个近期遇到的逻辑漏洞案例

分享一个近期遇到的逻辑漏洞案例

分享一个近期遇到的逻辑漏洞案例

如此设置之后在电脑上的Burpsuite就能抓到手机的Http包了,导入Burpsuite自带的证书可抓取到少部分的Https包。

Fillder的设置也是大同小异,不过Fillder设置好以后要访问下代理的IP地址安装下他的证书。开启完全信任即可抓取到少部分Https的包。

还是以ios为例,设置 –> 通用 –> 关于本机 –> 证书信任设置(最底下)

分享一个近期遇到的逻辑漏洞案例

我个人觉得Fillder对Https的支持比较好(也可能是我不会用Burpsuite),因为它可以抓取到隧道连接的请求,类似这样的分享一个近期遇到的逻辑漏洞案例

从而我们可以访问url去获取他的证书并安装从而抓取到他的Https包。

以https访问会在Firefox会这样显示,别的浏览器我不清楚,点击高级 –> 添加例外 –> 确认安全例外。

分享一个近期遇到的逻辑漏洞案例

再到Firefox右上角 选项 –> 隐私与安全 –> 查看证书

导出刚刚所添加的证书,发到手机上信任就可以抓到他的Https包了

分享一个近期遇到的逻辑漏洞案例

分享一个近期遇到的逻辑漏洞案例

但是一些网站这样做了还是抓不到它的Https包,希望知道怎么抓的大佬分享一下。

0×05 总结

人是最大的安全漏洞,开发的功能越多,所存在的问题就越多,多尝试一些思路,往往有意想不到的结果。可能有说错的或说的不好的地方,请各位指出,谢谢!

*本文原创作者:小石