在某授权项目中对多个app进行漏洞挖掘的一次过程中,发现某一款app软件中可通过打卡的方式进行积分累积,累积后的积分可通过换购的方式在积分商城进行商品换购。随手对打卡获得积分的功能和购物的功能进行了任意的尝试,单当时并未发现漏洞的存在,在对购物功能初测时返回包报错如下:
看到异常后就没有再进行测试,当时认为系统都进行报错了,订单应该不能有问题。直到我隔日打开自己的手机发现我的快递软件无缘多出两个新的快递时。在我还在为快递疑问时我想到了昨日重放的两次返回空指针异常的订单数据包。
于是继续测试app进行漏洞的复现。
具体挖掘的过程如下:
下载安装包后发现该app做了简单的防护无法直接通过burp代理进行抓包,直接上Xposed+JustTrustMe。我使用的测试环境为HUAWEI nova 3,现在的手机能够开启root安装Xposed非常麻烦,几乎都进行了相关的限制,这里推荐一个virtualXposed工具,使用还是比较方便的,对于小白来说免去了环境的配置相关root解锁的过程就可以实现相应的功能。
在virtualXposed中安装运行app,然后进行注册登录,登录后在“我的”可看到积分商城功能。
应用的功能为通过签到或其他任务赚取积分,然后使用积分进行兑换或者使用微信支付宝充值获取积分,积分商城使用积分进行购物。
首先打开积分商城选择想要购买(baipiao)的商品进行查看,然后点击下方的立即兑换(lijibaipiao),弹出兑换数量,继续点击立即兑换(lijibaipiao)。
在弹出的创建订单界面填写收获地址收获信息,然后开启burp拦截数据包,点击“提价订单”拦截数据。
然后我们将num参数修改为0如下进行放包。该数据包放包后返回包会提示空指针异常。这时应用进入支付页面提示我们支付积分,支付数量为0。
支付时有概率发生支付异常,在我的订单页面可查看到订单,点击付款(bapiao)进行付款。
这时候我们会看到
然后过段时间会发现
然后我们只需要静静的等待。
本次漏洞挖掘均在授权下进行测试,漏洞详情已报告形式提交给开发者,漏洞已完全修复。
往期推荐
E
N
D
原文始发于微信公众号(Tide安全团队):“0元购”支付逻辑漏洞的意外发现