<pre id="vvttv"><mark id="vvttv"><progress id="vvttv"></progress></mark></pre>
    <pre id="vvttv"></pre>

      <p id="vvttv"></p>

          <p id="vvttv"></p>

                <p id="vvttv"></p>

                <pre id="vvttv"><cite id="vvttv"><progress id="vvttv"></progress></cite></pre>

                  <output id="vvttv"><dfn id="vvttv"><th id="vvttv"></th></dfn></output>

                    <p id="vvttv"></p>

                    原文地址: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注入漏洞進行拋磚引玉,希望大牛們能對該漏洞進一步開發。

                      <pre id="vvttv"><mark id="vvttv"><progress id="vvttv"></progress></mark></pre>
                      <pre id="vvttv"></pre>

                        <p id="vvttv"></p>

                            <p id="vvttv"></p>

                                  <p id="vvttv"></p>

                                  <pre id="vvttv"><cite id="vvttv"><progress id="vvttv"></progress></cite></pre>

                                    <output id="vvttv"><dfn id="vvttv"><th id="vvttv"></th></dfn></output>

                                      <p id="vvttv"></p>

                                      这里只有精品视频