一次被告知泄露了「小米商城秘密」的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進制字符串,但理論上,還是可以造足夠大的數據來進行遍歷。當然,如果權限那塊做好的話,這個塊應該就不存在問題了。

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