在JS文件中搜索replayId,发现replayId变量是调用guid函数赋值的。
继续定位guid函数,到这里我们已经成功拿到请求和响应数据包的加解密过程,和guid生成的过程。
编写Python的execjs执行js代码,伪造guid值。
自动化脚本
继续编写python代码,完成自动化暴力破解登陆。万事具备,那离成功就差一个手机号字典了。
通过前期的信息收集,整理出一份高质量的手机号字典,幸福来的太突然,成功爆破出一个手机号和密码。
成功登陆用户账户:
继续深度挖掘,发现通过修改请求数据包中的mobilephone参数,还可以越权查看他人银行卡额度信息,包括卡ID、可用额度、已使用额度等。
总结
遇到全程加密数据包,我们首先分析前端JS文件,发现使用AES加密ECB模式PKCS7Padding填充,密钥key硬编码在js代码中,编写脚本破解加密算法。又发现利用请求头中的replayId值,防止攻击者重放请求数据包。通过全局搜索发现replayId变量是调用guid函数赋值的,继续编写Python脚本完成自动化的暴力破解,成功登陆,深入漏洞挖掘。