XSS學習(原理篇)

學習XSS之前,我們很有必要知道XSS到底是什麼東西。其英文名是(Cross Site Scripting),意思就是跨站腳本攻擊,是黑客常用的攻擊手段之一,因爲與層疊樣式表CSS(Cascading Style Sheets)同名,爲了避免混淆,故將其命名爲XSS。好了,現在知道了它的名字的由來之後,最重要的就是去了解XSS的實現原理。

XSS實現原理

因爲瀏覽器本身的設計缺陷,瀏覽器只負責解釋執行html+css+javascript代碼,並不會檢驗其安全性。故如果你的服務器對沒有對XSS漏洞準備安全的預防措施,都會存在XSS漏洞。下面具體講一下XSS的攻擊過程:

1.用戶登陸web應用程序上的網頁;.該網頁已經被攻擊者利用各種手段注入了javascript等腳本代碼;

2.服務器對用戶的瀏覽請求做出反應,用戶獲取攻擊者注入過代碼的URL;

3.攻擊者的javascript代碼在瀏覽者的瀏覽器上打開;此時可能會伴隨用戶瀏覽器向攻擊者發送會話令牌,然後攻擊者劫持用戶會話等現象的發生。

在接觸了幾天XSS之後,大致有以下特點:

1.XSS即是web應用程序上的計算機安全漏洞,也是黑客常用的攻擊手段;對於攻擊者而言,需要有很好的計算機語言基礎,如JavaScript,HTML5,Ajax,Css和其他腳本語言。

2.XSS產生的主要原因是web瀏覽器對用戶的輸入過濾不足。

3.通過將代碼注入到網頁,雖然對Web服務器沒有直接傷害,但它藉助網絡傳播,其危害最終會反饋到服務器。

4.XSS漏洞如此普遍主要是因爲web瀏覽器本身的設計是不安全的,開發人員在交互過程中的設計階段忽略了XSS防護,加上大部分人還沒認識到XSS的危害和錯誤的認爲XSS就只會在瀏覽器上彈出一個窗口而已,加上觸發跨站腳本的方式簡單且衆多和web2.0的流行和社交功能的迅猛發展,奠定了XSS發展的基礎。

5.XSS最重要也是最核心的是利用自己構造好的XSS語句,欺騙web應用程序上的過濾器,實現繞過其安全檢測,達成向網頁中注入javaScript等腳本信息的目的,從而導致XSS漏洞在互聯網上傳播。

6.要善於利用工具提高效率,要學會利用各種編碼方式提高XSS的攻擊性和隱蔽性。例如,unicode,escapes,URL編碼,十六進制,八進制等,同時對於特定情境下也可以利用腳本加密技術實現XSS攻擊。

7.有時候配合CSRF漏洞,將會由意想不到的效果

同時XSS攻擊也有一下弊端

1.XSS攻擊無對應軟件完成自動化攻擊,且有一定機率不成功;

2.是一種被動的攻擊手段,對website有http-only,crossdomiar。

下面幾個概念需要理解好

1.shellcode——起初是溢出程序和蠕蟲程序的核心,注入目標網頁中,使用腳本編寫好的代碼;

2.Exploit——完整編寫好的漏洞利用工具;

3.POC(Proof of Concept)——一段證明漏洞存在的程序代碼片段;

4.payload——意思爲有效載荷,概念驗證,即是漏洞驗證腳本;是組成Poc和Exp的必要組成部分。

XSS的分類

一.持久型的XSS

攻擊方把惡意腳本代碼固化在頁面中,當其他用戶訪問到此頁面的時候,瀏覽器會解析並且執行該腳本代碼,進而對其他用戶進行XSS攻擊。最典型的例子是留言板。

二.非持久性(反射型)的XSS

攻擊方通過改寫網頁訪問的URL,使其指向攻擊方已經準備好的腳本代碼。典型的例子是,搜索欄中輸入腳本代碼。欺騙用戶自己去點擊鏈接才能觸發XSS代碼。

三.DOM型的XSS

攻擊方利用javascript來展開攻擊,用戶請求一個由攻擊方提供的經過專門設計的URL,包括嵌入式的javascript,服務器響應用戶請求的時候不對URL進行處理,當用戶瀏覽這個相應的時候,腳本得以觸發。

發佈了43 篇原創文章 · 獲贊 13 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章