1. 程式人生 > >不破不立的app逆向-復現

不破不立的app逆向-復現

前言

偶然間看到的一篇漏洞分析報告,覺得挺有意思的,而且靶場的環境都還在,所以自己也來複現一把,體驗下如何進行app的漏洞挖掘!

開始

獲取目標

靶場的入口地址 首先是一個web頁面可以看到是一個妹子,而且給的提示已經很直接了,注意一下哦,這是app的漏洞挖掘哦,所以找一下網站下是否有appkali下進行目錄掃描,不過檢視原始碼便可以看到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到手機上 在使用工具前我們必須知道應用程式的包名,有兩種方法

  1. 使用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更常用的是CharlesFiddler,況且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手?,我還是退下吧!

總結

未完待續>>>等待著你… 參考文章