上次测试就发现,APP可反编译,可惜找不到密钥。恶补了几天的android。才发现原来放在so文件中,昨晚测着测着就维护了。早上起来一看,囧,给个更新了。发现只是日志打印修复了。验证码还是返回了。。。
当然,纯粹的破解算法,并没有什么卵用。却能通过解密后发现新问题。
1.APP反编译。
加解密算法
用IDA加载so文件,翻着翻着就找到了
2.短信验证码返回(估计短时间没修改),可重置登陆或支付密码,上次说过了
解密结果
直接输入验证码即可完成需要验证码的操作 。
重置过程见 WooYun: P2P金融安全之永利宝某处登录密码/支付密码重置
2.多接口存在越权问题(新发现的问题)
先说说登陆
返回内容,经解密后数据如下
无token或者session字段。经验证,i为用户uid,e为用户身份证,p为手机号,c为银行卡,r为用户姓名,m为可用余额。
登陆后APP展示信息如下
越权登陆(多接口越权缺陷),改造登陆后的返回包
剔除不定因数
只留下uid=10023
加密后结果
用这个返回包替换掉你的账号登陆后的结果,均可登陆手机号为187****9811,uid=10023的用户。进行操作。
选取比较重要的接口做遍历测试。
遍历uid后发包,可获取用户信息(手机号,姓名,银行卡,账上各种金额等)
遍历结果如下
批量请求myinfo 的脚本,内含加解密函数(比较糙)