安卓應用程序滲透測試(六)
前面啰嗦了這麼多,講了很多基礎知識,現在,就讓我們開始滲透的樂趣吧。
根據Owasp,漏洞共分為十大類。
M1—平台使用不當
M2—不安全的數據存儲
M3—不安全的通信
M4—不安全的身份驗證
M5—不安全的密碼
M6—不安全的授權
M7—客戶端代碼質量問題
M8—代碼篡改
M9—逆向工程
M10—附加功能
漏洞應用程序實戰合集:
https://pentestlab.blog/2016/11/07/list-of-vulnerable-android-applications/
本文中,我們將使用不安全的銀行App來演示漏洞。
信息收集
我們可以使用Drozer來收集安卓APP的信息。
命令 – run app.package.info –a
詳細信息:UID,GID,用戶許可權,數據目錄,Apk路徑,共享庫,共享用戶,版本和應用名稱。
攻擊安卓組件
我已經在安卓應用程序滲透測試(五)中介紹了所有的安卓組件,Activities(活動),Services(服務),Content Provider(內容提供商)和Broadcast Receiver(廣播接收器)。現在我們就來找找它們的漏洞以及它們在應用程序是如何容易被攻擊的。
攻擊Activities
exported activities(導出活動)
導出活動(exported=true)是在同一台設備上可以被其他App訪問的那些活動。絕大多數是在安卓上進行身份驗證後。
用戶都知道,當進行認證之後,應用程序會切換到另一個活動,例如,音樂播放器登陸後的播放列表。但是,開發者保留了這些導出活動,甚至沒有進行自定義許可權。
在安卓manifest文件中,活動可以通過導出值或者使用drozer命令來獲取。
獲取導出活動的相關信息:
命令– run App.activity.info –a
manifest文件
Drozer:
由於許可權未定義或登錄後的活動的導出值為true,我們可以使用它來繞過身份驗證。
我們嘗試使用Drozer在沒有憑證的情況下來調用登陸後的活動。
比如:Dotransfer(轉賬),Viewstatement(查看狀態),Changepassword(修改密碼)。
drozer命令 --run app.activity.start –component
run app.activity.start –component com.android.insecurebankv2 com.android.insecurebankv2.DoTransfer
之前:
之後:
使用惡意App調用其他應用程序的活動
調用其他應用程序活動的另一種方法是編寫惡意應用程序並為它提供你想要啟動的安裝包的名字和活動。在我們的案例中,惡意應用程序不需要任何許可權來啟動存在漏洞應用程序的「登錄後」活動。
保護活動組件
設置Android:exported屬性值為false。
在我們的應用程序的AndroidManifest.XML文件中,我們應該將以下屬性添加到要保護的應用程序組件中。在我們的案例中,應該保護登錄後的活動不被任意調用。
True:provider可供其他應用程序使用。任何應用程序都可以使用provider的內容URI來訪問它,具體取決於為provider指定的許可權。
False:provider不可用於其他應用程序。設置android:exported =「false」以限制對應用程序provider的訪問。只有與provider具有相同用戶ID(UID)的應用程序才能訪問它。
上面的代碼嚴格限制了除了當前App之外的其他App或任何系統組件來訪問這個activities。只有與當前App具有相同用戶ID(uid)的App才能訪問這個活動。
自定義許可權來限制訪問
android:exported屬性值並不是限制activities暴露給其他App的唯一方法。我們還可以通過為activities設置自定義許可權來強制實施基於許可權的限制。如果開發人員想要對他的App組件設置許可權,只允許那些具有許可權的App才能訪問,這種自定義許可權的方法是非常奏效的。
敬請期待安卓應用程序滲透測試七
其他部分的文章如下:
安卓應用程序滲透測試(一)
安卓應用程序滲透測試(二)
安卓應用程序滲透測試(三)
安卓應用程序滲透測試(四)
安卓應用程序滲透測試(五)
※IC3、DHS、FBI聯合發布RDP攻擊預警
※hackthebox:poison通關攻略
TAG:嘶吼RoarTalk |