Cross Iframe Trick:the Old New Thing(圖)
互聯(lián)網(wǎng) 發(fā)布時(shí)間:2008-10-08 19:36:28 作者:佚名
我要評(píng)論

我思考了很久才把這里面的錯(cuò)綜復(fù)雜的關(guān)系整清楚,我想很多人看我下面的paper會(huì)睡著,或者干脆“一目百行”的跳過(guò)去,但如果你真的想弄懂,請(qǐng)調(diào)試我的 每一個(gè)poc,會(huì)非常有助于理解(雖然你還是可能會(huì)暈)。請(qǐng)尊重俺的勞動(dòng)成果,碼這么多字不容易。歡迎技術(shù)討論,但謝絕沒(méi)仔
實(shí)例如下:
1.html的代碼:
1.html:
// 1.html上的彈窗函數(shù)
function tt1(fvck){
alert(fvck);
}
同在 www.A.com 域下的 4.html代碼:
4.html:
//parent.parent.tt1("fvck tt1"); 也可以
top.tt1("fvck tt1"); // 調(diào)用 1.html 里的 tt1() 函數(shù)
在 www.B.com 域下的3.html 作用是iframe proxy,其代碼為:
3.html:
var tt1_4 = document.createElement("iframe");
tt1_4.src = "http://www.A.com/4.html";
document.body.appendChild(tt1_4);
訪問(wèn) http://www.A.com/1.html 后,將通過(guò) http://www.B.com/3.html ,利用 http://www.A.com/4.html 執(zhí)行 http://www.A.com/1.html 的腳本
正確執(zhí)行了腳本。
跨域的問(wèn)題已經(jīng)POC過(guò)了,那么存在什么樣的風(fēng)險(xiǎn)呢?
先講跨域的問(wèn)題。
首先,由于4.html在這里關(guān)聯(lián)性最小,所以我們假設(shè)4.html是我們?cè)谟駻下上傳的某個(gè)文件,或者是存在XSS漏洞的某個(gè)頁(yè)面。
那么對(duì)于域A下的頁(yè)面 1.html,它包含了 域B的3.html,當(dāng)域B下的3.html被惡意用戶(hù)控制時(shí),惡意用戶(hù)就可以通過(guò)4.html,直接攻擊到 1.html
所以我們有了第一個(gè)攻擊方法:
Attack Vector 1:控制iframe proxy后可以跨域攻擊父頁(yè)面
由于域B和域A不是同一個(gè)域,所以域A的安全級(jí)別和一些防范措施很可能無(wú)法涉及到域B,這種信任上的危機(jī)將帶來(lái)一定的風(fēng)險(xiǎn)。
請(qǐng)注意和普通掛馬或者是XSS攻擊不同的是,域A上的這個(gè)頁(yè)面是我們無(wú)法控制或篡改的,但他正好包含了一個(gè)指向域B上頁(yè)面的iframe,所以我們才可以通過(guò)域B上的那個(gè)頁(yè)面跨域攻擊它。
比如,www.baidu.com/av.html 可能包含了某個(gè)廣告網(wǎng)站的一些頁(yè)面,他使用的是iframe的方式:
那么這個(gè)時(shí)候,攻擊者如果能夠控制evil.html,就可以在evil.html 中包含一個(gè)指向 http://www.baidu.com/evilupload.html 的iframe;
當(dāng)正常用戶(hù)瀏覽 http://www.baidu.com/av.html 時(shí)候,就會(huì)受到來(lái)自 evilupload.html 的XSS攻擊, 而攻擊的來(lái)源是 http://www.advertise.com/evil.html 發(fā)起的。
這種跨域的攻擊將會(huì)極其隱蔽,因?yàn)檎嬲膼阂饽_本是寫(xiě)在evilupload.html 里的,所以即便查看了 av.html 和 evil.html 的代碼也無(wú)法看到任何惡意腳本,只能看到兩個(gè)iframe。
對(duì)于IE 6, 甚至可以把 4.html 改名為 4.JPG 或者 4.RAR, 在iframe proxy中引用后,都將執(zhí)行腳本。(想到GIFAR沒(méi)?)
而Firefox 2 則必須保持為 html 文件才能保證腳本的執(zhí)行。
控制evil.html的方法有很多種,最常見(jiàn)的包括直接攻擊域B服務(wù)器、篡改客戶(hù)端網(wǎng)絡(luò)中的數(shù)據(jù)、或者是在evil.html 中放置一個(gè) 持久性的XSS,都將導(dǎo)致 evil.html 被控制
通過(guò)控制 evil.html,調(diào)整不同的iframe src地址,我們可以得到第二種攻擊方法。
Attack Vector 2:在iframe proxy中直接引用一個(gè)非持久性XSS(反射XSS),可以讓該XSS在父窗口中持久存在。
很多人非常鄙視非持久性XSS(反射型XSS),認(rèn)為這種XSS只能依靠欺騙的手段去騙人點(diǎn)擊,才能讓攻擊正常實(shí)施起來(lái)。
其實(shí)讓非持久性XSS變得持久的方法,已經(jīng)出現(xiàn)過(guò)好多次了。比如利用applet、利用flash的AS腳本、利用IE的Ghost 頁(yè)面。
那么今天這種方法又要多一個(gè)了:利用 Cross Iframe Trick
實(shí)例如下:
設(shè)想http://www.A.com/4.html 存在一個(gè)XSS漏洞,其代碼如下:
4.html:
//parent.parent.tt1("fvck tt1");
//top.tt1("fvck tt1");
document.write("window.location.href "\' >");
這里存在一個(gè)基于DOM的XSS漏洞,當(dāng)在瀏覽器地址欄里輸入:
http://www.A.com/4.html#'>alert(/XSS/);時(shí),alert()將被執(zhí)行。
此時(shí),利用 Cross Iframe技術(shù),在 3.html 中直接構(gòu)造iframe地址為XSS的地址。
3.html:
//function alertpoc(){ alert("alert POC"); }
var tt1_4 = document.createElement("iframe");
tt1_4.src = "http://www.A.com/4.html#\'\>\alert(\"Domain=\" document.domain)\;\\";
document.body.appendChild(tt1_4);
訪問(wèn) http://www.A.com/1.html 后,4.html里的XSS漏洞將被利用,并彈出可愛(ài)的小框框
如果說(shuō),前面講的兩種方法是利用的Rule 2,那么Rule 1能否利用起來(lái)呢?思考后,發(fā)現(xiàn)Rule 1雖然沒(méi)有跨域風(fēng)險(xiǎn)高,但還是會(huì)帶來(lái)一些問(wèn)題的。
1.html的代碼:
1.html:
// 1.html上的彈窗函數(shù)
function tt1(fvck){
alert(fvck);
}
同在 www.A.com 域下的 4.html代碼:
4.html:
//parent.parent.tt1("fvck tt1"); 也可以
top.tt1("fvck tt1"); // 調(diào)用 1.html 里的 tt1() 函數(shù)
在 www.B.com 域下的3.html 作用是iframe proxy,其代碼為:
3.html:
var tt1_4 = document.createElement("iframe");
tt1_4.src = "http://www.A.com/4.html";
document.body.appendChild(tt1_4);
訪問(wèn) http://www.A.com/1.html 后,將通過(guò) http://www.B.com/3.html ,利用 http://www.A.com/4.html 執(zhí)行 http://www.A.com/1.html 的腳本

正確執(zhí)行了腳本。
跨域的問(wèn)題已經(jīng)POC過(guò)了,那么存在什么樣的風(fēng)險(xiǎn)呢?
先講跨域的問(wèn)題。
首先,由于4.html在這里關(guān)聯(lián)性最小,所以我們假設(shè)4.html是我們?cè)谟駻下上傳的某個(gè)文件,或者是存在XSS漏洞的某個(gè)頁(yè)面。
那么對(duì)于域A下的頁(yè)面 1.html,它包含了 域B的3.html,當(dāng)域B下的3.html被惡意用戶(hù)控制時(shí),惡意用戶(hù)就可以通過(guò)4.html,直接攻擊到 1.html
所以我們有了第一個(gè)攻擊方法:
Attack Vector 1:控制iframe proxy后可以跨域攻擊父頁(yè)面
由于域B和域A不是同一個(gè)域,所以域A的安全級(jí)別和一些防范措施很可能無(wú)法涉及到域B,這種信任上的危機(jī)將帶來(lái)一定的風(fēng)險(xiǎn)。
請(qǐng)注意和普通掛馬或者是XSS攻擊不同的是,域A上的這個(gè)頁(yè)面是我們無(wú)法控制或篡改的,但他正好包含了一個(gè)指向域B上頁(yè)面的iframe,所以我們才可以通過(guò)域B上的那個(gè)頁(yè)面跨域攻擊它。
比如,www.baidu.com/av.html 可能包含了某個(gè)廣告網(wǎng)站的一些頁(yè)面,他使用的是iframe的方式:
那么這個(gè)時(shí)候,攻擊者如果能夠控制evil.html,就可以在evil.html 中包含一個(gè)指向 http://www.baidu.com/evilupload.html 的iframe;
當(dāng)正常用戶(hù)瀏覽 http://www.baidu.com/av.html 時(shí)候,就會(huì)受到來(lái)自 evilupload.html 的XSS攻擊, 而攻擊的來(lái)源是 http://www.advertise.com/evil.html 發(fā)起的。
這種跨域的攻擊將會(huì)極其隱蔽,因?yàn)檎嬲膼阂饽_本是寫(xiě)在evilupload.html 里的,所以即便查看了 av.html 和 evil.html 的代碼也無(wú)法看到任何惡意腳本,只能看到兩個(gè)iframe。
對(duì)于IE 6, 甚至可以把 4.html 改名為 4.JPG 或者 4.RAR, 在iframe proxy中引用后,都將執(zhí)行腳本。(想到GIFAR沒(méi)?)
而Firefox 2 則必須保持為 html 文件才能保證腳本的執(zhí)行。
控制evil.html的方法有很多種,最常見(jiàn)的包括直接攻擊域B服務(wù)器、篡改客戶(hù)端網(wǎng)絡(luò)中的數(shù)據(jù)、或者是在evil.html 中放置一個(gè) 持久性的XSS,都將導(dǎo)致 evil.html 被控制
通過(guò)控制 evil.html,調(diào)整不同的iframe src地址,我們可以得到第二種攻擊方法。
Attack Vector 2:在iframe proxy中直接引用一個(gè)非持久性XSS(反射XSS),可以讓該XSS在父窗口中持久存在。
很多人非常鄙視非持久性XSS(反射型XSS),認(rèn)為這種XSS只能依靠欺騙的手段去騙人點(diǎn)擊,才能讓攻擊正常實(shí)施起來(lái)。
其實(shí)讓非持久性XSS變得持久的方法,已經(jīng)出現(xiàn)過(guò)好多次了。比如利用applet、利用flash的AS腳本、利用IE的Ghost 頁(yè)面。
那么今天這種方法又要多一個(gè)了:利用 Cross Iframe Trick
實(shí)例如下:
設(shè)想http://www.A.com/4.html 存在一個(gè)XSS漏洞,其代碼如下:
4.html:
//parent.parent.tt1("fvck tt1");
//top.tt1("fvck tt1");
document.write("window.location.href "\' >");
這里存在一個(gè)基于DOM的XSS漏洞,當(dāng)在瀏覽器地址欄里輸入:
http://www.A.com/4.html#'>alert(/XSS/);時(shí),alert()將被執(zhí)行。
此時(shí),利用 Cross Iframe技術(shù),在 3.html 中直接構(gòu)造iframe地址為XSS的地址。
3.html:
//function alertpoc(){ alert("alert POC"); }
var tt1_4 = document.createElement("iframe");
tt1_4.src = "http://www.A.com/4.html#\'\>\alert(\"Domain=\" document.domain)\;\\";
document.body.appendChild(tt1_4);
訪問(wèn) http://www.A.com/1.html 后,4.html里的XSS漏洞將被利用,并彈出可愛(ài)的小框框

如果說(shuō),前面講的兩種方法是利用的Rule 2,那么Rule 1能否利用起來(lái)呢?思考后,發(fā)現(xiàn)Rule 1雖然沒(méi)有跨域風(fēng)險(xiǎn)高,但還是會(huì)帶來(lái)一些問(wèn)題的。
相關(guān)文章
什么是CC攻擊 判斷網(wǎng)站是否被CC攻擊并且如何防御CC攻擊
CC主要是用來(lái)攻擊頁(yè)面的,大家都有這樣的經(jīng)歷,就是在訪問(wèn)論壇時(shí),如果這個(gè)論壇比較大,訪問(wèn)的人比較多,打開(kāi)頁(yè)面的速度會(huì)比較慢,對(duì)不?!一般來(lái)說(shuō),訪問(wèn)的人越多,論壇的頁(yè)2024-01-06Windows系統(tǒng)安全風(fēng)險(xiǎn)-本地NTLM重放提權(quán)
入侵者主要通過(guò)Potato程序攻擊擁有SYSTEM權(quán)限的端口偽造網(wǎng)絡(luò)身份認(rèn)證過(guò)程,利用NTLM重放機(jī)制騙取SYSTEM身份令牌,最終取得系統(tǒng)權(quán)限,該安全風(fēng)險(xiǎn)微軟并不認(rèn)為存在漏洞,所以2021-04-15- 這篇文章主要介紹了文件上傳漏洞全面滲透分析小結(jié),這里主要為大家分享一下防御方法,需要的朋友可以參考下2021-03-21
- 這篇文章主要介紹了sql手工注入語(yǔ)句&SQL手工注入大全,需要的朋友可以參考下2017-09-06
- 這篇文章主要介紹了詳解Filezilla server 提權(quán),需要的朋友可以參考下2017-05-13
FileZilla Server 2008 x64 提權(quán)與防御方法
這篇文章主要介紹了FileZilla Server 2008 x64 提權(quán)與防御方法,需要的朋友可以參考下2017-05-13https加密也被破解 HEIST攻擊從加密數(shù)據(jù)獲取明文
不久之前我們說(shuō)過(guò)關(guān)于http和https的區(qū)別,對(duì)于加密的https,我們一直認(rèn)為它是相對(duì)安全的,可今天要講的是,一種繞過(guò)HTTPS加密得到明文信息的web攻擊方式,不知道這消息對(duì)你2016-08-10iPhone和Mac也會(huì)被黑 一條iMessage密碼可能就被盜了
一直以來(lái)蘋(píng)果系統(tǒng)的安全性都是比安卓要高的,但是再安全的系統(tǒng)也免不了漏洞,蘋(píng)果也一樣。最近爆出的新漏洞,只需要接收一條多媒體信息或者iMessage就會(huì)導(dǎo)致用戶(hù)信息泄露。2016-07-27- 國(guó)家正在修正關(guān)于黑客方面的法律法規(guī),有一條震驚黑客圈的“世紀(jì)佳緣”起訴白帽黑客事件,深深的傷害了廣大黑客們的心,加上扎克伯格和特拉維斯·卡蘭尼克賬號(hào)被盜,于是黑2016-07-11
如何逆向破解HawkEye keylogger鍵盤(pán)記錄器進(jìn)入攻擊者郵箱
面對(duì)惡意郵件攻擊,我們就只能默默忍受被他攻擊,連自我保護(hù)能力都沒(méi)有談什么反抗?讓人痛快的是,如今有了解決辦法,逆向破解鍵盤(pán)記錄器,進(jìn)入攻擊者郵箱2016-07-06