主页 > 网络知识 > 雷蛇电子钱包APP漏洞分析

雷蛇电子钱包APP漏洞分析

 

雷蛇电子钱包APP漏洞分析

 

雷蛇支付(Razer Pay)在新加坡和马来西亚被广泛使用,在该篇Writeup中,作者通过APP逆向分析,利用Frida调试,发现了雷蛇支付电子钱包(Razer Pay Ewallet)中的用户签名(Signature)生成漏洞,由此可读取雷蛇支付用户的聊天记录、删除用户绑定的银行账户并窃取用户个人敏感信息,漏洞最终获得了雷蛇官方将近$6,000的奖励。以下是作者的漏洞发现思路,仅当姿势学习借鉴:

漏洞背景

雷蛇(Razer Inc,RΛZΞR)是一家在新加坡创立的游戏周边设备公司,又被称为“绿光灯厂”,近年开始进军电子消费业务。雷蛇的两个总部分别设立在新加坡及美国圣地牙哥。2017年11月在香港联交所上市,产品面向游戏玩家,其产品大多数都以肉食动物命名。2018年推出电子钱包Razer Pay。2020年5月,开始生产外科口罩。

在雷蛇支付电子钱包(Razer Pay Ewallet)的请求防篡改机制中,除auth_token之外,还使用了参数signature对不同用户的请求进行签名验证,每一个对服务端的GET和POST请求都会附带一个经过编码的signature参数值和用户id,如下图所示:

 

雷蛇电子钱包APP漏洞分析

 

因此,试图对任意请求参数的篡改重发都会无效,但经APK逆向分析发现,雷蛇支付电子钱包(Razer Pay Ewallet)存在用户签名(Signature)生成漏洞,结合Frida的分析利用可自动计算生成新的用户签名(Signature),由此可导致很多的越权(IDOR)问题。

我在使用Burp对雷蛇支付APP的网络请求进行抓包时发现,由于请求中用户签名(Signature)的保护,所以其中很多参数都是无法篡改的,因此,我第一时间想到了注册另外一个雷蛇支付用户来进行配合测试,但在两个用户的同一请求的场景下,经会话Payload的替换操作后,执行无效,原因还是出在有用户签名(Signature)的会话请求保护。

我决定切实分析一下用户签名(Signature)的生成机制,在apktool 和 Jadx-Gui 的反编译帮助下,我对其APP的运行有了代码层次的理解,发现其中存在一个名为“MD5Encode”的方法函数,从名字上就知道是用了MD5加密算法。经过一些参数Payload的组合,我决定尝试一下生成用户签名(Signature),但怎么试也无法生成正确的用户签名,我猜想可能是参数次序错误,或它是一种非常规的MD5加密。

 

雷蛇电子钱包APP漏洞分析

 

删除其他用户的绑定银行账户

不抛弃不放弃,我把其中涉及用户签名生成的所有相关代码拷贝出来,然后用IDE调试工具IntelliJ IDEA进行尝试生成,终于,在“MD5Encode”方法运用中,我组合对了正确的参数次序,不过由于有代码混淆,还需要做一些微调,但还算不太难。最终,在之前生成的请求主体中,插入正确的参数值,用上述代码即能生成正确的用户签名(Signature)字符串!

(小编分析,在以下多个用户签名的生成过程中,用到了用户自己的token,其为参数之一,然后经MD5Encode方法,可以生成与多个用户id对应的不同用户签名,也就是可以成功生成雷蛇服务端分配给多个用户的各个用户签名Signature)

 

雷蛇电子钱包APP漏洞分析

 

 

雷蛇电子钱包APP漏洞分析

 

由此,我首先想到的就是测试越权漏洞(IDOR),我选择了一个比较敏感的API接口/deleteBankAccount,也就是删除用户绑定的银行账户操作,然后在两个账户的测试场景下,竟然能成功删除掉另一雷蛇支付(Razer Pay)用户的绑定银行账户!

说点什么吧
  • 全部评论(0
    还没有评论,快来抢沙发吧!