XSS跨站腳本攻擊漏洞之1原理及分類

說在開頭:文章是我通過查詢資料後按照自己的理解總結出來的,所以如果有說法不對的地方,歡迎大佬指正~


一、XSS漏洞介紹

1.簡介

XSS全稱跨站腳本(Cross Site Scripting),爲不和層疊樣式表(Cascading Style Sheets, CSS)的縮寫混淆,故縮寫爲XSS。
跨站點腳本(XSS)攻擊是一種針對網站應用程序的注射型攻擊,攻擊者在可信的網頁中嵌入惡意代碼,用戶訪問可信網頁時觸發XSS而被攻擊。

2.原理

攻擊者在有XSS漏洞的前端頁面嵌入惡意代碼,導致受害者訪問頁面再不知情的情況下觸發惡意代碼,獲取到受害者的信息。
形成XSS漏洞的原因,是對輸入輸出的內容過濾不嚴格,構造的惡意js代碼被前端執行。

3.攻擊過程

畫個圖來展示一下它的大致攻擊過程:
在這裏插入圖片描述

  • 常見的惡意JS腳本有獲取用戶的cookie、或者是鍵盤鉤子來記錄用戶的鍵盤輸入。

二、XSS的分類

XSS漏洞分爲三個類型:反射型、存儲型、DOM型。

1.反射型

反射型XSS是一次性的,非持久型攻擊。

可能的攻擊方式:
攻擊者可以通過電子郵箱等方式將包含XSS的惡意js代碼的鏈接發送給目標用戶。當用戶訪問該鏈接時,攻擊者的惡意服務器接收該目標用戶的請求並進行處理,然後惡意服務器把帶有XSS代碼的數據發送給目標用戶的瀏覽器,瀏覽器解析這段惡意js代碼以後,就會觸發XSS漏洞。

2.存儲型

存儲型XSS是一種持久型XSS,攻擊腳本將被永久的存放在目標服務器的數據庫或文件中,具有很高的隱蔽性。

可能的攻擊方式:
這種攻擊方式多見於論壇博客和留言板,攻擊者在發帖的過程中將惡意腳本連同正常信息一起注入帖子的內容中,隨着帖子被服務器存儲下來,惡意腳本也永遠地被存放在服務器的後端存儲器中,當其他用戶瀏覽這個被注入了惡意腳本的帖子時,惡意腳本會在他們的瀏覽器中得到執行。

3.DOM型

DOM:Document Object Model,它的作用是可以使程序和腳本能夠動態訪間和更新文檔的內容、結構及樣式。
DOM型XSS也是反射型XSS的一種,它是基於DOM文檔對象模型的一種漏洞。

HTML的標籤都是節點,而這些節點組成了DOM的整體結——節點樹。
通過HTML DOM,樹中的所有節點均可通過JavaScript進行訪問。
所有HTML元素(節點)均可被修改,也可以創建或刪除節點。
再畫個圖來展示一下HTML DOM樹的結構:
在這裏插入圖片描述

在網站頁面中有許多元素,當頁面到達瀏覽器時,瀏覽器會爲頁面創建一個頂級的Document object文檔對象,接着生成各個子文檔對象,每個頁面元素對應一個文檔對象,每個文檔對象包含屬性、方法和事件。可以通過JS腳本對文檔對象進行編輯,從而修改頁面的元素。

也就是說,客戶端的腳本程序可以通過DOM動態修改頁面內容,從客戶端獲取DOM中的數據並在本地執行。由於DOM是在客戶端修改節點的,所以基於DOM型的XSS漏洞不需要與服務器端交互,它只發生在客戶端處理數據的階段。

  • 如果這幾段理論知識讀得你雲裏霧裏、依然搞不懂到底什麼是DOM型XSS,不要着急,我稍後會發表的兩篇文章,是在DVWA和Pikachu中對XSS進行利用和繞過,結合實例來理解應該會比較好懂~

可能的攻擊方式:
攻擊者提交一個經過專門設計的URL,其中包含XSS代碼。當用戶請求這個URL時, 服務器的響應不會以任何形式包含攻擊者的腳本。而當用戶的瀏覽器處理這個響應時,DOM對象就會處理XSS代碼,導致存在XSS漏洞。

根據上面對三種類型XSS的原理分析,也不難看出它們三者的危害程度:
存儲型>反射型>DOM型

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