今天使用某快递软件寄快递是,发现有接口可以获取所有寄件人和收件人的收货信息,联系方式等。所以尝试看看这个接口是否会有越权漏洞的存在。
首先去应用宝下载了该应用的apk文件,将apk文件安装到测试机中。设置代理,进行流量分析。通过分析流量发现获取地址信息接口如下所示:
发现请求中有menId这个参数,这个应该是对应的用户id,但是这个参数是加密的,所以我们得知道这个值是怎么获取的。进一步分析,这个值是从云端获取的,获取的请求如下所示:
请求中只有明文menNo,而且这个是一个数字,看起来就是用户对应的ID,而且应该是连续的,所以想到尝试去修改memNo的值获取其他用户的个人信息。修改请求中memNo的值后,发送,得到如下结果:
所以猜测,是对请求数据进行了认证。分析请求的内容发现,请求的认证字段应该是sytToken,所以需要分析sytToken的生成算法。所以逆向顺丰速运app,尝试获取加密算法。进一步分析代码,发现加密算法如下所示:
既然知道了sytToken的加密算法,那么就能修改memNo的值发送请求了。
尝试爆破memNo的值,看看能不能批量获取到用户的信息,脚本如下所示:
分析响应,发现获取个人信息失败。
进一步分析,发现是因为每一个用户绑定了设备id,即请求中的deviceId,如果自己构造的请求中deviceId的值和用户最后一次登录时使用的deviceId的值是一样的,那么就能成功获取用户信息。
但是分析获取收货地址信息接口时,发现,没有对deviceId进行验证,但是memId时云端下发的,不知道它的加密方式,但是可以遍历32位memId的数值才能获取用户的地址信息,只是会有点困难,这边就不详诉了。
才能获取用户的地址信息,只是会有点困难,这边就不详诉了。