Cross Iframe Trick:the Old New Thing(圖)
發(fā)布日期:2021-12-30 01:24 | 文章來源:源碼中國
我思考了很久才把這里面的錯綜復雜的關系整清楚,我想很多人看我下面的paper會睡著,或者干脆“一目百行”的跳過去,但如果你真的想弄懂,請調(diào)試我的 每一個poc,會非常有助于理解(雖然你還是可能會暈)。請尊重俺的勞動成果,碼這么多字不容易。歡迎技術討論,但謝絕沒仔細看就來指手畫腳的。@_@
首先,為了幫助大家更好的理解,我先講講這種攻擊能夠達成什么效果:
1. 跨域執(zhí)行腳本(IE、Firefox)
2. 把非持久性XSS變成持久性XSS
3. 跨頁面執(zhí)行腳本
4. 瀏覽器將很難修補這一“特性”造成的威脅
5. 當然還是有一些條件限制的,本篇只是在理論上描述了這種攻擊。
那么,什么是cross iframe,簡單來說就是把iframe做一個迭代,以實現(xiàn)一些iframe之間的交叉數(shù)據(jù)訪問。在正常的web應用中,許多地方都有用到這種技術,比如facebook,比如yahoo。
但是由cross iframe引申出來一些安全隱患,則是我這里要探討的重點。
以下是我的測試環(huán)境:
Windows XP SP2
IE 6 SP2 (我只有IE6,沒有IE7,請自行測試IE7)
Firefox 2.0.0.16
測試域名:
www.A.com (/1.html , /4.html)
www.B.com (/2.html , /3.html)
這次測試主要使用了4個html頁面,請牢記1.html和4.html是在域A下; 2.html和3.html是在域B下
首先來看看什么是Cross Iframe, 他們又能干些什么。
Rule1: 同一個頁面下的兩個iframe,如果這兩個iframe指向同一個域,那么他們可以互相訪問,并操作對方頁面的腳本。
在 www.A.com 上,存在一個 1.html ,包含了兩個iframe,這兩個iframe分別引用了www.B.com 上的兩個頁面。其代碼如下:
1.html:
現(xiàn)在我們的目的就是利用 iframe:tt2_2 去調(diào)用 iframe:tt2_3里的javascript的函數(shù)。
3.html的代碼如下:
function alertpoc(){
alert("alert POC");
}
2.html的代碼如下:
2.html:
window.onload = function() {
parent.frames["tt2_3].alertpoc();
}
那么,當訪問 http://www.A.com/1.html 時,iframe:tt2_2中的腳本在www.B.com執(zhí)行了,它通過讀父窗口的iframe:tt2_3,嘗試在其中執(zhí)行腳本函數(shù) alertpoc()。由于tt2_2與tt2_3同在www.B.com 域中,所以他們之間不存在跨域問題,腳本被允許執(zhí)行。
Rule2:域B能夠以 iframe proxy 的方式,操作域A上的腳本,或者傳遞信息,實現(xiàn)跨域操作。
什么叫iframe proxy呢?其實就是做了一次iframe的迭代。
如下:
http://www.A.com/1.html 中包含一個iframe,指向 http://www.B.com/3.html
http://www.B.com/3.html 中又包含一個iframe,指向 http://www.A.com/4.html
那么這個3.html就是一個iframe proxy,通過 3.html 就能從B域 向 A域的 4.html傳遞消息,如果4.html還有一些處理的話,就可以執(zhí)行腳本。
首先,為了幫助大家更好的理解,我先講講這種攻擊能夠達成什么效果:
1. 跨域執(zhí)行腳本(IE、Firefox)
2. 把非持久性XSS變成持久性XSS
3. 跨頁面執(zhí)行腳本
4. 瀏覽器將很難修補這一“特性”造成的威脅
5. 當然還是有一些條件限制的,本篇只是在理論上描述了這種攻擊。
那么,什么是cross iframe,簡單來說就是把iframe做一個迭代,以實現(xiàn)一些iframe之間的交叉數(shù)據(jù)訪問。在正常的web應用中,許多地方都有用到這種技術,比如facebook,比如yahoo。
但是由cross iframe引申出來一些安全隱患,則是我這里要探討的重點。
以下是我的測試環(huán)境:
Windows XP SP2
IE 6 SP2 (我只有IE6,沒有IE7,請自行測試IE7)
Firefox 2.0.0.16
測試域名:
www.A.com (/1.html , /4.html)
www.B.com (/2.html , /3.html)
這次測試主要使用了4個html頁面,請牢記1.html和4.html是在域A下; 2.html和3.html是在域B下
首先來看看什么是Cross Iframe, 他們又能干些什么。
Rule1: 同一個頁面下的兩個iframe,如果這兩個iframe指向同一個域,那么他們可以互相訪問,并操作對方頁面的腳本。
在 www.A.com 上,存在一個 1.html ,包含了兩個iframe,這兩個iframe分別引用了www.B.com 上的兩個頁面。其代碼如下:
1.html:
現(xiàn)在我們的目的就是利用 iframe:tt2_2 去調(diào)用 iframe:tt2_3里的javascript的函數(shù)。
3.html的代碼如下:
function alertpoc(){
alert("alert POC");
}
2.html的代碼如下:
2.html:
window.onload = function() {
parent.frames["tt2_3].alertpoc();
}
那么,當訪問 http://www.A.com/1.html 時,iframe:tt2_2中的腳本在www.B.com執(zhí)行了,它通過讀父窗口的iframe:tt2_3,嘗試在其中執(zhí)行腳本函數(shù) alertpoc()。由于tt2_2與tt2_3同在www.B.com 域中,所以他們之間不存在跨域問題,腳本被允許執(zhí)行。

Rule2:域B能夠以 iframe proxy 的方式,操作域A上的腳本,或者傳遞信息,實現(xiàn)跨域操作。
什么叫iframe proxy呢?其實就是做了一次iframe的迭代。
如下:
http://www.A.com/1.html 中包含一個iframe,指向 http://www.B.com/3.html
http://www.B.com/3.html 中又包含一個iframe,指向 http://www.A.com/4.html
那么這個3.html就是一個iframe proxy,通過 3.html 就能從B域 向 A域的 4.html傳遞消息,如果4.html還有一些處理的話,就可以執(zhí)行腳本。
上一頁12 3 下一頁 閱讀全文
版權聲明:本站文章來源標注為YINGSOO的內(nèi)容版權均為本站所有,歡迎引用、轉載,請保持原文完整并注明來源及原文鏈接。禁止復制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務器上建立鏡像,否則將依法追究法律責任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學習參考,不代表本站立場,如有內(nèi)容涉嫌侵權,請聯(lián)系alex-e#qq.com處理。
相關文章