XSS 跨站腳本攻擊

跨站腳本攻擊(Cross Site Scripting),爲了不和層疊樣式表(Cascading Style Sheets, CSS)的縮寫混淆,故將跨站腳本攻擊縮寫爲XSS。惡意攻擊者往Web頁面裏插入惡意Script代碼,當用戶瀏覽該頁之時,嵌入其中Web裏面的Script代碼會被執行,從而達到惡意攻擊用戶的目的。

Reflected XSS(基於反射的XSS攻擊)

主要通過利用系統反饋行爲漏洞,並欺騙用戶主動觸發,從而發起Web攻擊。

例1:
步驟1:在網站搜索商品,當搜索不到時站點會做“xxx未上架提示”。如下圖。
這裏寫圖片描述
步驟2:在搜索框搜索內容,填入“”, 點擊搜索。
步驟3:當前端頁面沒有對填入的數據進行過濾,直接顯示在頁面上, 這時就會alert那個字符串出來。
這裏寫圖片描述
步驟4:進而可以構造獲取用戶cookies的地址,通過QQ羣或者垃圾郵件,來讓其他人點擊這個地址:

如果受騙的用戶剛好已經登錄過該網站,那麼,用戶的登錄cookie信息就已經發到了攻擊者的服務器(xss.com)了。當然,攻擊者會做一些更過分的操作。

Stored XSS(基於存儲的XSS攻擊)

Stored XSS和Reflected XSS的差別就在於,具有攻擊性的腳本被保存到了服務器並且可以被普通用戶完整的從服務的取得並執行,從而獲得了在網絡上傳播的能力。

步驟1: 發一篇文章,裏面包含了惡意腳本

你好!當你看到這段文字時,你的信息已經不安全了!<script>alert('xss')</script>

步驟2: 後端沒有對文章進行過濾,直接保存文章內容到數據庫。
步驟3: 當其他讀者看這篇文章的時候,包含的惡意腳本就會執行。

提示:文章是保存整個HTML內容的,前端顯示時候也不做過濾,就極可能出現這種情況,大部分存在於博客網站。

如果我們的操作不僅僅是彈出一個信息,而且刪除一篇文章,發一篇反動的文章,或者成爲我的粉絲並且將這篇帶有惡意腳本的文章轉發,這樣是不是就具有了攻擊性。

DOM-based or local XSS(基於DOM或本地的XSS攻擊)

DOM,全稱Document Object Model,是一個平臺和語言都中立的接口,可以使程序和腳本能夠動態訪問和更新文檔的內容、結構以及樣式。
DOM型XSS其實是一種特殊類型的反射型XSS,它是基於DOM文檔對象模型的一種漏洞。可以通過DOM來動態修改頁面內容,從客戶端獲取DOM中的數據並在本地執行。基於這個特性,就可以利用JS腳本來實現XSS漏洞的利用。

例如可能觸發DOM型XSS的屬性:
document.referer屬性
window.name屬性
location屬性
innerHTML屬性
documen.write屬性

總結:XSS攻擊的本質就是,利用一切手段在目標用戶的瀏覽器中執行攻擊腳本。
防範:

對於一切用戶的輸入、輸出、客戶端的輸出內容視爲不可信,在數據添加到DOM或者執行了DOM API的時候,我們需要對內容進行HtmlEncode或JavaScriptEncode,以預防XSS攻擊。

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