<span id="7ztzv"></span>
<sub id="7ztzv"></sub>

<span id="7ztzv"></span><form id="7ztzv"></form>

<span id="7ztzv"></span>

        <address id="7ztzv"></address>

            原文地址:http://drops.wooyun.org/mobile/8165

            0x00 背景


            13年的時候,IBM的安全研究人員發現了1個Google框架層的漏洞Fragment注入漏洞,該漏洞可以導致Android手機的PIN碼被重置,大家應該對圖1不陌生。這個漏洞之后,業界對該漏洞的影響沒有進一步的探討,本文將對該漏洞進行進一步的探討,歡迎拍磚。

            enter image description here

            0x01 Fragment注入漏洞詳情


            Android Framework提供了android.preference.PreferenceActivity這個類來對preference進行展示,我們可以繼承這個類來展示preference,并進行擴展。基類中會接收Intent數據,并進行一定檢查,其中兩個比較重要:

            PreferenceActivity.EXTRA_SHOW_FRAGMENT (’:android:show_fragment’) and PreferenceActivity.EXTRA_SHOW_FRAGMENT_ARGUMENTS (’:android:show_fragment_arguments’)。第一個extra域包含PreferenceActivity要動態加載的Fragment,第二個extra域包含傳給該Fragment的參數。Fragment也可以通過Fragment.getActivity這個函數來獲取傳進來的參數。PreferenceActivity會調用Fragment.instantiate來動態加載Fragment.這個函數通過反射來加載Fragment,并把它變成Fragment對象。如圖2所示。

            enter image description here

            任何繼承自PreferenceActivity并對外導出的組件,都會受到攻擊。惡意app可以傳:android:show_fragment這個extra值來指定要動態加載的類。在PreferenceActivitycontext里,通過dalvik.system.PathClassLoader函數來動態加載類,由于沒有對請求的app進行校驗,惡意app可以動態加載有漏洞app里面的任何類(包括未導出類),使得惡意app可以訪問有漏洞app的隱私信息。

            0x02 Fragment注入漏洞利用


            1.拒絕服務

            由于通過該漏洞可以加載app里面的任何類,包括未導出類,如果未導出類對畸形消息處理不當,將會導致本地拒絕服務漏洞。下面以IRCCloud軟件為例。

            com.irccloud.android.activity.PreferencesActivity組件對外導出:

            enter image description here

            com.irccloud.android.activity.PreferencesActivity組件繼承自PreferenceActivity

            enter image description here

            由于沒有對Fragment注入漏洞進行防御,可通過該漏洞加載app內任意不導出的組件。選擇com.irccloud.android.fragment.ServerReorderFragment作為攻擊目標:

            enter image description here

            ServerReorderFragment沒有對畸形消息進行處理,導致拒絕服務,見下圖。

            enter image description here

            2.遠程命令執行

            由于現在很多組件都是基于Webview來展示頁面,并且Fragment組件應用越來越廣,以后將會有越來越多的Webview組件是基于Fragment來展示。由于Fragment注入漏洞可以加載app內任意未導出組件,如果基于FragmentWebview組件存在addJavascriptInterface漏洞,將會導致遠程命令執行漏洞。在市面上的app里找了下,發現很多Webview組件基于Fragment,但是繼承自PreferenceActivity的組件是不導出的,因此下面將自己寫個demo來驗證下可行性。

            MainActivity導出,并繼承自PreferenceActivity

            enter image description here

            WebviewFragment導出js接口,并加載url。

            enter image description here

            利用Fragment Injection漏洞對WebviewFragment攻擊。

            enter image description here

            通過Fragment Injection漏洞,WebviewFragment已加載惡意html,存在遠程代碼執行漏洞攻擊,見圖。

            enter image description here

            四、總結


            由于可以加載app內的任意未導出組件,因此Fragment注入漏洞可攻擊點還是挺多的。本文對Fragment注入漏洞進行拋磚引玉,希望大牛們能對該漏洞進一步開發。

            <span id="7ztzv"></span>
            <sub id="7ztzv"></sub>

            <span id="7ztzv"></span><form id="7ztzv"></form>

            <span id="7ztzv"></span>

                  <address id="7ztzv"></address>

                      亚洲欧美在线