國慶假期結束,這一節(jié)準備XSS跨站攻擊滲透測試中的利用點,上一節(jié)講了SQL注入攻擊的詳細流程,很多朋友想要咨詢具體在跨站攻擊上是如何實現(xiàn)和利用的,那么我們Sinesafe滲透測試工程師為大家詳細的講講這個XSS是如何實現(xiàn)以及原理。
XSS全稱為Cross Site ing,為了和CSS分開簡寫為XSS,中文名為跨站腳本。該漏洞發(fā)生在用戶端,是指在渲染過程中發(fā)生了不在預期過程中的Java代碼執(zhí)行。XSS通常被用于獲取Cookie、以受攻擊者的身份進行操作等行為。
3.2.1.1. 反射型XSS
反射型XSS是比較常見和廣泛的一類,舉例來說,當一個網站的代碼中包含類似下面的語句: ,那么在訪問時設置 /?user=
<>alert("hack")
,則可執(zhí)行預設好的Java代碼。 反射型XSS通常出現(xiàn)在搜索等功能中,需要被攻擊者點擊對應的鏈接才能觸發(fā),且受到XSS Auditor、No等防御手段的影響較大。
3.2.1.2. 儲存型XSS
儲存型XSS相比反射型來說危害較大,在這種漏洞中,攻擊者能夠把攻擊載荷存入服務器的數(shù)據庫中,造成持久化的攻擊。
3.2.1.3. DOM XSS
DOM型XSS不同之處在于DOM型XSS一般和服務器的解析響應沒有直接關系,而是在Java腳本動態(tài)執(zhí)行的過程中產生的。
例如
<>
function xsstest()
{
var str = document.getElementById("input").value; document.getElementById("output").innerHTML = "
";
}
輸入 x' ='java:alert(/xss/) 即可觸發(fā)。
3.2.1.4. Blind XSS
Blind XSS是儲存型XSS的一種,它保存在某些存儲中,當一個“受害者”訪問這個頁面時執(zhí)行,并且在文檔對象模型(DOM)中呈現(xiàn)payload。它被歸類為盲目的原因是因為它通常發(fā)生在通常不暴露給用戶的功能上。
3.2.2. 同源策略
3.2.2.1. 簡介
同源策略限制了不同源之間如何進行資源交互,是用于隔離潛在惡意文件的重要安全機制。是否同源由URL決定,URL由協(xié)議、域名、端口和路徑組成,如果兩個URL的協(xié)議、域名和端口相同,則表示他們同源。
3.2.2.1.1. file域的同源策略
在之前的瀏覽器中,任意兩個file域的URI被認為是同源的。本地磁盤上的任何HTML文件都可以讀取本地磁盤上的任何其他文件。
從Gecko 1.9開始,文件使用了更細致的同源策略,只有當源文件的父目錄是目標文件的祖先目錄時,文件才能讀取另一個文件。
3.2.2.1.2. cookie的同源策略
cookie使用不同的源定義方式,一個頁面可以為本域和任何父域設置cookie,只要是父域不是公共后綴(public suffix)即可。
不管使用哪個協(xié)議(HTTP/HTTPS)或端口號,瀏覽器都允許給定的域以及其任何子域名訪問cookie。設置 cookie時,可以使用 domain / path / secure 和 http-only 標記來限定其訪問性。
所以 https://localhost:8080/ 和 http://localhost:8081/ 的Cookie是共享的。
3.2.2.1.3. Flash/SilverLight跨域
瀏覽器的各種插件也存在跨域需求。通常是通過在服務器配置crossdomain.xml,設置本服務允許哪些域名的跨域訪問。
客戶端會請求此文件,如果發(fā)現(xiàn)自己的域名在訪問列表里,就發(fā)起真正的請求,否則不發(fā)送請求。
3.2.2.2. 源的更改
同源策略認為域和子域屬于不同的域,例如
域名1.a.com 與 域名a.com / 域名1.a.com 與 域名2.a.com/ xxx.域名1.a.com 與 域名1.a.com 兩兩不同源。
對于這種情況,可以在兩個方面各自設置 document.damain='a.com' 來改變其源來實現(xiàn)以上任意兩個頁面之間的通信。
另外因為瀏覽器單獨保存端口號,這種賦值會導致端口號被重寫為 null 。
3.2.2.3. 跨源訪問
同源策略控制了不同源之間的交互,這些交互通常分為三類:
通常允許跨域寫操作(Cross-origin writes)
鏈接(links)
重定向
表單提交
通常允許跨域資源嵌入(Cross-origin embedding)
通常不允許跨域讀操作(Cross-origin reads)
可能嵌入跨源的資源的一些示例有:
< src="..."> 標簽嵌入跨域腳本。語法錯誤信息只能在同源腳本中捕捉到。
標簽嵌入CSS。由于CSS的松散的語法規(guī)則,CSS的跨域需要一個設置正確的Content-Type 消息頭。
/ / 嵌入多媒體資源。
申請創(chuàng)業(yè)報道,分享創(chuàng)業(yè)好點子。點擊此處,共同探討創(chuàng)業(yè)新機遇!