打造Mac下APK逆向環境到實戰介面XSS挖掘
前言
想嘗試逆向APK來發現一些介面和安全問題,但是Mac下沒啥好用的APK逆向工具,於是我就參考文章:https://blog.csdn.net/jyygn163/article/details/71731786 的思路在Mac下使用homebrew安裝:
brew install apktool brew install dex2jar
JD-GUI去http://jd.benow.ca/下載,這裡我是用的是jar版。
過程
自動化編譯
手動敲命令太繁瑣了,寫個shell指令碼一鍵化。
在 .bash_profile
檔案(環境變數)加入這個命令 alias apkdec="/Users/chen/HackBox/Tools/Android\ Decompile/DeApkScript.sh"
,這樣當終端開啟的時候就可以使用 apkdec
命令了,而指令碼 DeApkScript.sh
的內容如下:
apktool d $1 && mv $1 $1.zip && unzip $1.zip "*.dex" -d $1_dex/ && cd $1_dex/ && d2j-dex2jar *.dex
功能實現如下:
- apktool獲取資原始檔
- 將apk檔案重新命名為zip檔案
- 解壓zip檔案中的.dex檔案
- 切換解壓目錄
- 將dex檔案轉換成jar檔案
這樣,最後只需要使用JD-GUI反編譯JAR即可看見原始碼了。
實戰
執行命令:
apkdec xxx.apk
首先對 classes-dex2jar.jar
檔案進反編譯,但似乎在Mac下JD-GUI支援的不太好,所以我選擇使用luyten(Download:https://github.com/deathmarine/Luyten/releases),如下是兩張對比圖:
漏洞挖掘
在luyten下使用Command+G快捷鍵全域性搜尋,搜尋域名尋找介面(因為這個APP需要內部人員才能登入所以從正常的入口是無法找到介面進行漏洞挖掘的)
尋找了一番看見這樣一個介面:
二話不說訪問之,提示:
{"res_code":"-1008003","res_message":"引數錯誤","timeMillis":1542516229723}
不懂Java的我一臉懵,但是天下語言都是互通的,大概的瞭解了程式碼的意思(可能理解的不到位,就不說出來誤導了),於是找到這樣一個函式:
從我的理解來看這個介面就是有這兩個引數 appId、userName
,於是加入GET請求引數中請求:
Request: ?appId=123&userName=123 Response: {"res_code":"0","res_message":"成功","timeMillis":1542516495613,"extData":null,"data":[{"appId":"123","permissionTag":[""],"extData":null}]}
其中appId的引數值返回在了頁面中,該請求響應報文 Content-Type: text/html
,所以嘗試構建XSS,運氣好,確實也存在XSS問題:
總結
學習、不斷的學習。