一次被告知泄露了“小米商城秘密”的App 渗透实战

  • 2019 年 10 月 8 日
  • 筆記

—————————————————–

最近对自家公司的业务app做了自查测试,发现的一个问题,以及测试过程所遇到的坑,记录下来。

1,首先在手机wifi里设置代理,将手机的流量都导入到导入到电脑的burp里。

2,先抓取涉及到目标app的流量,不出意外,流量全部做了加密(要都是明文,也就没有记录的意义了^_^).

3,一看加密流量,就很自然的接上frida,查看加密的流量内容,并尝试使用burp的插件,解密流量,尝试修改参数,再进行加密,再次提交。

启动frida服务,并设置与电脑联调。

抓取加密流量

查看对应的加密流量里解密后的信息

4,因为惯性思维,导致在这里遇到了此次测试最大的坑!想当然的以为所有的加密流量都是由app封装的,逆向了apk之后,查找所有涉及到加解密的函数,一个一个hook查看,发现这个app,一部分流量是经过了公司内部的加解密服务,可是有一部分流量,无法hook到。

无法hook到的加密流量(可能老司机们一眼就能看出来问题所在,可我这个小白,在这个困住了好久 –!)

5,经过反复查看流量的上下文,发现hook的流量是从另一个接口发出的,单独查看这几到这个接口的流量,发现这些流量是通过js加密的。。。。

使用的加密方法以及秘钥,已经明明白白的写在了js文件里了。。。。

6,按照js里写的加密方法,找了一个在线解密的网站,通过选择加密方法,填入秘钥,就可以解密出加密的数据。

https://blog.zhengxianjun.com/html/tool_crypto_aes.html

查看解密后的流量,其中一个phoneuuid得到了重点关注(关注的原因,只是因为经验所致,查越权,基本上都是重点关注这些涉及到id的参数)。

7,使用这种方法,将这个接口交互的流量都进行了查看,发现“管理收货地址”这个接口,可以查看到我先前设置好的收货地址信息。

8,修改提交参数,把phoneuuid改成另一个测试账号的id,发现可以查看到另一个账号的里设置的收货地址信息,坐实了此接口存在越权的漏洞。

(请原谅这些厚厚的马赛克。。。因为这些地址,是同事家的真实地址)

8,以上验证方法需要在3个不同的站点进行转发,效率太低了,就用Python按照js的加密方法,参考网上的代码,造了了一个轮子,可以输入明文或者密文,直接显示最终的结果。

按照phoneuuid的格式,随机制造数据,使用这个脚本做加解密转换,就可以遍历其他人的收货地址信息。

后记:

与开发同事沟通,说此phoneuuid是由后端进行aes加密生成的,apk文件里也不包含此加密的key,但通过更改id,就能查看其它信息,这点的确是存在越权的问题。

另外,还建议增加phoneuuid的长度,现在是16位的16进制字符串,但理论上,还是可以造足够大的数据来进行遍历。当然,如果权限那块做好的话,这个块应该就不存在问题了。

———————————–