不破不立的app逆向-復現
前言
偶然間看到的一篇漏洞分析報告,覺得挺有意思的,而且靶場的環境都還在,所以自己也來複現一把,體驗下如何進行app的漏洞挖掘!
開始
獲取目標
靶場的入口地址
首先是一個web頁面可以看到是一個妹子,而且給的提示已經很直接了,注意一下哦,這是app的漏洞挖掘哦,所以找一下網站下是否有app
。
kali
下進行目錄掃描,不過檢視原始碼便可以看到app
的下載路徑
分析測試
接下來我們就需要對該app
進行一個逆向分析,目的是什麼呢?是為了獲取該app
管理使用者的後臺,那麼如何通過一個app
開始逐步的進行分析呢?接下來可以跟隨著我的腳步,一起探究從一個app
到管理後臺的刺激體驗。
jadx-gui
首先使用jadx-gui
attachBaseContext
基本上可以確定該app
是加殼了。
然後我們可以使用ApkScan-PKID
簡單的檢視一下什麼廠商的殼
360加固,還好不是企業殼,應該能脫,手動脫殼太過繁瑣,能用工具儘量用工具,關於360加固,我立馬想到了四哥的一篇文章,這裡介紹到了一個開源工具drizzleDumper
,用法也很簡單,只需在一個root
的裝置上使用即可。
drizzleDumper github
上只有原始碼,自己編譯又非常容易出錯,所以在網上找到了別人已經編譯好的工具。
連結: http://pan.baidu.com/s/1hr49HBI 密碼: 6bgv
本來我不想寫脫殼過程的,不過正好我這是新mac,環境都還沒配置好,所以索性也記錄一下過程
adb install *.apk
安裝app包
adb push drizzleDumper /data/local/tmp
將工具push到手機上
在使用工具前我們必須知道應用程式的包名,有兩種方法
- 使用aapt 如下命令
aapt dump badging app.apk | grep package
關於aapt
這是SDK
的工具,只需配置一下環境變數,便可以在終端上使用了。
mac上設定環境變數參考這篇文章
2. 使用 Android crack tools
非常不幸的是脫殼失敗了,我懷疑是因為我的手機版本較高,儘量在Dalvik
模式下而不是ART
,也就是說我們測試的機型android版本最好在4.4
4.4
的手機上提示sdk
版本太舊,一陣無語,感覺是沒有辦法再進行下去了,但是既然給自己定下了目標,在困難也要去完成它。
~~ 脫殼暫時先跳過 ~~
假設這裡已經成功脫殼,那麼我們很快的可以定位到登陸函式,從中可以找到測試賬號,我們使用測試賬號進行登陸,繼續後續的滲透測試。
摸爬滾打
經歷了多次嘗試我終於成功利用drizzleDumper
工具進行脫殼?
這裡我記錄一下我的嘗試過程。
起初drizzleDumper
無法使用,我便去網上找尋其他脫殼工具,最後找到了ZjDroid.apk
但是最終還是失敗了,實在是搞不懂原因,畢竟android的底層機制沒怎麼了解過。
不甘心的我,又開始使用avd
模擬器進行嘗試,首先我建立了andrid 4.4
的映象,安裝apk
時提示目標sdk
版本太低,所以這就推翻了我之前的猜測。
於是我便又建立了一個android 8.0(api 28)
的映象,成功安裝執行,但是在上傳圖片的時候程式直接崩了,這明顯是不正常的現象。同時當我嘗試使用drizzleDumper
進行脫殼時,出現如下報錯。
看來我們需要使用android api 23
的映象進行測試,我感覺我離成功僅僅之差一步了,最後我在api-23
上成功的脫殼,並繼續接下來的滲透測試!?
你真的是個魔鬼?
滲透測試
測試賬號 [email protected]
密碼 El12LjSIe5Sl
,以及一些沒有密碼的賬號,這也許會對下面的測試提供幫助。
[email protected] [email protected] [email protected] [email protected] [email protected]
由於我是在自己的手機上進行測試,所以截圖比較麻煩,也就寫了個簡單的sh,快速的將螢幕擷取到本地。
#! /bin/bash
path=$(pwd)"/"$1
echo $path
adb shell screencap -p /data/local/tmp/$1
adb pull /data/local/tmp/$1 .
echo "Done!"
簡單查看了一下,也就只有實名認證
的地方可以進行點選,尷尬?的事情又發生了,當我嘗試上傳圖片時,程式直接崩潰退出了,真的是很無語?
至此我已經無法繼續進行下去了。
–
繼續前進
天無絕人之路,經過上面?的一番折騰之後,我們終於能夠繼續下一步的測試了。
adb pull /data/local/tmp/com.example.laravelchen.toutiao_dumped_88.dex .
將dex
檔案拖到本地,然後使用jadx
反編譯檢視。
可以看到這個登陸註冊方法,主要是通過一個Frame
進行的,根據包名繼續搜尋檢視?。
OK!我們也得到了和作者相同的結果,這是必然的,只不是過程有點坎坷,你要知道接下來你需要面對更大的困難。
我們使用測試賬號進行登陸,接下來進入到上傳圖片的環節。
我覺得這個測試的app
不是很友好,上傳圖片時因為許可權的問題直接退出了,我在設定中,賦予了它所有許可權,這樣他才能正常的執行下去。
由於其他按鈕均不可用,所以很明顯該案例就是在引導我們進行上傳。
僅僅靠前端資訊我們是沒辦法進行下去的,很明顯我們需要進行抓包。
抓包又是一個十分折騰人的事情啊
這麼折騰一下又是一個下午,心力憔悴了,?
首先是這個AVD
模擬器設定代理,需要從命令列啟動AVD
,可以參考文章一和文章二
主要是兩行程式碼:
emulator -list-avds emulator -avd <name> -http-proxy http://<local-ip-address>:<port>
然後是用哪個工具進行抓包,糾結了好久,畢竟對於android
更常用的是Charles
和Fiddler
,況且mac版的BP
我找了好久,終於找到一個能用的(要求不高能用就行)
關於BP
如何設定代理可以參考這篇文章
經過重重阻礙,我終於抓到了資料包。
真的是每當我快要放棄的時候,又給了我希望,希望我能繼續的完成下去,走完這一路?
BP
我不太會用,感覺後面將會是狂風暴雨!但我迎接挑戰!?
我們使用測試賬號進行上傳,但是返回“測試賬號無許可權請求”
就像WP
中所寫的,我們應該能聯想到那些沒有密碼的賬號中,應該是某種提示,否則我們只能通過爆破來得到使用者名稱了。
臨時學習了一波如何進行重複發包(不知道是不是這麼叫?)
可以看到pockr
使用者的返回成功的引起了我的注意⚠️,並且根據這個提示,我們可以很容易聯想到是不是此使用者的簽名,相對應的也就是該使用者的密碼,因為通常來說,某個使用者會對應一個自己密碼的簽名,在提交的時候,很有可能回去驗證該簽名,同時我們注意到在提交時的這兩個引數。
我覺得有必要去全域性搜尋一下signature和timestamp
了,也許會有什麼驚喜的發現。
最終定位到submitPicture
方法
可以看到上傳的型別僅支援jpeg gif svg xml
,並且在上傳時校驗了time 和 signature
,主要是在這裡
signature=time+name+"rkcop"
,為了驗證我的想法?,我簡單寫了一個驗證過程,這是正確的,這可棒極了!
所以根據時間戳,我們計算出pockr
使用者的signature
為``,然後重新進行提交,很明顯,按道理來說提交實名認證是成功的。
emmmmm,說實話接下來我不知道該怎麼做了,只能參考這
wp
接著復現了,web
真的是一竅不通。 照著文章裡說的,應該只有svg
能成功上傳,但是我這裡第一次提交jpeg
也能成功,?有點魔性。 這個xss我真的是做不下去了,這到底是什麼意思,天吶!你是魔鬼麼?
https://wm.xss.ht/
這是上傳的xss
的網站,感覺程式碼像是會返回什麼東西,但是我看不到任何返回。
確實是寫不下去了,暫時先擱著了,畢竟還有需要其他的事情。
如果有會的師傅,希望能聯絡一下我105794729*
,最後一位隨緣。
xss攻擊
有待補充
感覺後面需要一個
web
手?,我還是退下吧!
總結
未完待續>>>等待著你… 參考文章