某支付APP-JS加密算法分析

关注微信公众号获取更多资讯,第一时间学习最新前沿渗透技术!
在这里插入图片描述

0x01 前言

还是像往常一样对某个APP进行安全测试,由于是支付软件根据安全合规要求APP发送的请求大多是加密的,这点在测试之前已经想好解决方案。根据以前遇到的加密方式,大多都是AES、DES、RSA、SM3、SM4这种单调的加密,秘钥存储在APP客户端或者存储在JS中,只需要通过APP逆向或者JS断点拿到KEY或者公钥,就可以还原加密算法。但是这次遇到的这个支付APP跟往常加密算法存在着很大不同,下文将逐步分析它的加密流程。

0x02 加密分析

打开APP某个功能点,触发HTTP请求,数据包如下,简单的分析一下该请求的结构

从请求头来看,请求头中带有Referer,说明该请求虽然是从APP发出的,但实际还是由APP嵌入的网页发起的请求,利用这点可以通过搜索请求URL找到相关的WEB页面,相关加密算法肯定存在此WEB页面中。这样就不用逆向APP少走弯路。

从请求数据来看,openId是我的手机号;aesKeySign可能是某种签名、加密算法可能与AES有关;encData可能是请求数据;encType是加密类型。
image.png

分析完数据包,就该根据分析结果进行相关操作,先看看该请求的URL是由哪个WEB页面发起的
全局从响应包中搜索personProductInfo

发现相关JS文件
image.png

查看JS文件的Referer即可获取发起请求的网页
image.png

打开该网页
image.png

在该网页中全局搜索encType、aesKeySign相关关键字定位加密算法具体位置

最终在0.d4f14.js文件中发现实现加密的函数
具体代码位置在6755至6815行之间
image.png

逐行分析关键代码

  1. 在6761行调用/gapi/mapi-gateway/auth/getPublicKey接口获取服务端RSA公钥

image.png

相关请求如下
image.png

  1. 在6722行调用clientRsaKeyUpload函数,客户端生成一对RSA公钥与秘钥

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值