0x01 前言
记一次某SRC通过公众号漏洞提取他人账户余额的过程。通过搜索公众号并发现其潜在的服务,进一步分析退款功能的实现方式,最终成功实现了他人账户的余额转移。主要系统在姓名验证上存在缺陷,导致只需匹配微信ID即可完成退款。
末尾可领取挖洞资料文件
0x02 漏洞发现
通过SRC的给的资产搜索公众号关键字,发现目标的一个公众号
进入公众号,在公众号中发现了可交互的业务。通过查看功能,发现为统一部署的APP服务,放弃该目标,转而寻找其他薄弱的业务。
依次浏览该公众号历史推文,在其中一篇推文中发现了该子公司自建的另一个公众号用于提供额外的服务。
扫码进入该公众号,在菜单栏发现公众号提供了一些服务
点进我的钱包,跳转到一个web页面,在该页面发现一处退款功能
余额4元是为了测试自己充的,随意输入提现金额和账户姓名,抓包查看返回情况
我测试了几次正常的退款操作,发现该功能验证了真实姓名。当姓名不正确时,是无法退款的。
根据现有条件要实现将他人账户里的余额退款到我的微信,那么我需要获取一个存在的账户以及它绑定的用户姓名。
已知退款账号是有规律的,我们只需要用11111+爆破手机号,即可获取到其他有余额的账户。那么如何获取到该账户绑定的真实姓名呢?于是我想到利用支付宝转账获取已存在账户的部分姓名信息。
自此获取到了该号主真实姓名的后两位,还差一个姓。利用百家姓+名,如果返回成功,则说明该方法可行。
于是构造请求包进行爆破
结果,百家姓爆破完没有一条记录是体现成功的,都提示姓名不符
重新梳理一下思路,有没有可能,这个接口根本没有验证手机号和姓名是否匹配,而是只验证了微信ID和姓名是否匹配呢?
于是,我将cardId修改为其他账户id,让微信id和我自己的真实姓名相匹配,发包,成功退款1元。
那么这1元是否是从别人账户上退给我的呢?我只需要验证我的余额是否改变即可。如果我的账户余额没有减少,说明这1元确实是从别人账户上退给我的。回到查看余额的界面,发现我的余额还是4元。
最后高危漏洞到手。
0x03 最后
经过后续测试,被盗刷余额用户系统内的退款记录里,不会提示退款消息。无需知道对方真实姓名,只用枚举手机号,即可盗刷用户的余额,且不会在系统里留下记录。喜欢的师傅可以点赞转发支持一下谢谢!
0x04
原文始发于微信公众号(渗透安全HackTwo):支付漏洞分享通过修改参数盗刷余额|挖洞技巧
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论