前言
  隨著互聯網發展,APP應用的盛行,近了解到手機APP相關的安全性測試,以webview為主體的app,站在入侵或者攻擊的角度來講,安全隱患在于http抓包,逆向工程。
  目前大部分app還是走的http或者https,所以防http抓包泄露用戶信息以及系統自身漏洞是必要的,通過抓包當你查看一個陌生用戶信息時,一些手機號,qq等信息頁面上應該不顯示的,但這些信息不顯示并不代表服務器沒有下發,好多都是客戶端限制的,通過抓包,完全可以查看到陌生用戶的app。再如好多發帖,push消息的應用,如果沒有消息有效性的驗證,抓到包之后篡改消息,服務器一點反應都沒,這會留有極大的隱患。逆向工程對于android很好理解了,反編譯,修改或者插入自己的代碼,以達到相應目的。
  安全性測試策略
  1. 用戶隱私
  · 檢查是否在本地保存用戶密碼,無論加密與否
  · 檢查敏感的隱私信息,如聊天記錄、關系鏈、銀行賬號等是否進行加密
  · 檢查是否將系統文件、配置文件明文保存在外部設備上
  · 部分需要存儲到外部設備的信息,需要每次使用前都判斷信息是否被篡改
  備注:本地存儲數據可以查看看應用的SharedPreferences文件和數據庫文件中的數據(root后在應用安裝目錄內,或者查看外部存儲中有沒有寫入敏感數據)。
  2. 文件權限
  · 檢查App所在的目錄,其權限必須為不允許其他組成員讀寫
  3. 網絡傳輸
  · 檢查敏感信息在網絡傳輸中是否做了加密處理,重要數據要采用TLS或者SSL
  備注:http請求默認是明文的,如果安全驗證和加密機制很爛,通過網絡嗅探掃描,很容易被猜到和模擬請求,也可能被注入。
  比如:允許一個虛假的HTML形式被注入攻擊者利用來誘騙用戶輸入他們的用戶名和密碼,然后把他們的憑據發送到惡意網站。
  4. 運行時解釋保護
  · 對于嵌有解釋器的軟件,檢查是否存在XSS、SQL注入漏洞
  · 使用webiew的App,檢查是否存在URL欺騙漏洞
  5. Android組件權限保護
  · 禁止App內部組件被任意第三方程序調用。
  · 若需要供外部調用的組件,應檢查對調用者是否做了簽名限制
  6. 升級
  · 檢查是否對升級包的完整性、合法性進行了校驗,避免升級包被劫持
  7.應用自身安全性
  · 對某個應用進行逆向,看反編譯后的代碼有沒有敏感信息暴露。反編譯后對代碼修改,插入劫持代碼后重新打包,如果存在這種漏洞,對用戶和開發者都構成極大的威脅。
  備注:要求對應用進行加密,防止靜態破解,盜取源碼,然后嵌入惡意病毒、廣告等行為再利用工具打包、簽名,形成二次打包應用
  8.界面截取
  · 通過adb shell命令或第三方軟件獲取root權限,在手機界面截取用戶填寫的隱私信息,隨后進行惡意行為。
  安全性測試方法
  如下為轉載 Seay FreeBuf 的文章
  移動app大多通過web api服務的方式跟服務端交互,這種模式把移動安全跟web安全綁在一起。移動app以web服務的方式跟服務端交互,服務器端也是一個展示信息的網站,常見的web漏洞在這也存在,比如說SQL注入、文件上傳、中間件/server漏洞等,但是由于部分app不是直接嵌入網頁在app中,而是使用的api接口返回josn數據,導致掃描器爬蟲無法爬取鏈接。
  下圖是抓的糗事百科糗事列表

  那么我嘗試去找app服務端的漏洞,目前想到的兩種方法:
  1.反編譯APP
  2.http[s]代理抓包
  那么有人應該會提出問題,這兩種方式拿到的鏈接都是零零散散的,也不好找漏洞啊,我這邊的利用方式是把所有抓取的鏈接直接提交任務到多引擎web漏洞掃描器,掃描器可以批量掃SQL注入等等,其實除了這些漏洞,還有很多可以利用的信息。
  一、反編譯APP
  有兩種反編譯方式,dex2jar和apktool,兩個工具反編譯的效果是不一樣的,dex2jar反編譯出java源代碼,apktool反編譯出來的是java匯編代碼。
  1. dex2jar反編譯
  工具:dex2jar+jdgui
  方法:
  a. 修改apk為zip擴展名

  b. 解壓出classes.dex文件
  c.使用dex2jar反編譯(dex2jar.bat classes.dex)

  后反編譯出來的源碼如下圖。雖然部分類被配置proguard.cfg 混淆了,但是還是可以利用的。

  2. apktool反編譯
  工具:apktool
  這個工具比較簡單,直接(apktool d apkfile)可以反編譯apk文件,反編譯出來的東西為smali反匯編代碼、res資源文件、assets配置文件、lib庫文件,我們可以直接搜索smali文件和資源文件來查找鏈接等。

  利用app查找網站真實IP
  除了app服務端的漏洞,還有一個比較好玩的利用方式,通過收集app里面的子域名ip來尋找目標網站的真實IP,根據經驗,大多app的接口都沒有使用cdn等服務。

  糗事百科真實IP