安全漏洞中的倚天劍——XSS跨站腳本攻擊

在這裏插入圖片描述

one、概念

XSS跨站腳本攻擊(Cross-Site Scripting)就是網站將用戶輸入的內容輸出到頁面上,在這個過程中可能有惡意代碼被瀏覽器執行,XSS屬於被動式的攻擊,因爲其被動且不好利用,所以許多人常呼略其危害性。
XSS通常情況可以有兩種解釋就是它可以是一種攻擊方式,或者是一種漏洞。
XSS其實叫CSS,但是由於和另一種網頁技術——層疊樣式表(Cascading Style Sheets)的縮寫一樣,爲了防止混淆,所以把原本的CSS簡稱爲XSS。
這一漏洞攻擊在各種WEB應用安全漏洞中,一直被OWASP(Open Web Application Security Project)組織評爲十大應用安全中的其中之一。

two、原理

XSS的原理是由於Web應用程序對用戶輸入過濾不足,這時候攻擊者就可以通過這些不足在網頁上面注入一些比如盜取cookie,轉賬等等的JavaScript腳本惡意代碼,當用戶瀏覽這些網頁時就會執行其中的惡意代碼,從而就完成一個的完整的XSS攻擊流程。

跨站腳本,就是用戶稀裏糊塗地執行了攻擊者放在網頁上的惡意腳本,歸根結底就是服務端過於信任客戶端提交的數據

在這裏由於XSS有分類,所以對XSS原理的解釋只是一個比較泛的解釋,具體的原理還得需要具體的XSS類型去分析,即在下面博文中。

three、類型

上面說了,XSS只是一個比較泛的概念,具體的攻擊漏洞,還得具體分析,一般XSS漏洞有反射型,存儲型、DOM型(DOM—based型)。

1、反射型XSS

在這裏插入圖片描述
感覺看上面的圖比較難理解,zzzzzz

反射型XSS又叫非持久型XSS,是用戶點擊到攻擊者設置好的惡意網站(一般這種是POST請求才使用)或者是用戶訪問到攻擊者設置好的URL(即可以使用GET請求),在網頁返回的內容中出現攻擊者設置的XSS腳本代碼,並被瀏覽器解析執行。反射的意思就是XSS攻擊腳本被Web服務器反射回來給瀏覽器解析執行。

在這裏我們會發現,反射型XSS由於請求方式不同攻擊手法也不同,但原理大同小異,就是都是讓客戶去觸發到這個漏洞點上,返回服務器反射給瀏覽器並被瀏覽器解析,這之間服務器他就相當於一個傳遞者,將惡意代碼傳遞個用戶,這一過程看上去就像反射鏡反射一樣,攻擊者將一束光線射給反射鏡,反射鏡又將這束光反射給用戶。

注意:這裏是瀏覽器解析了腳本,而不是服務器

2、存儲型XSS

在這裏插入圖片描述
存儲型XSS也叫持久性XSS,是攻擊者將惡意腳本代碼存儲到Web服務器中並被解析,客戶當訪問到這網頁時將受到攻擊。在這裏一定要注意反射型與存儲型區別:鏈接在這裏。

這時我們就會發現不管是什麼方式請求,

注意:這裏是服務器解析了腳本,而不是瀏覽器

3、DOM型XSS

在這裏插入圖片描述
首先我們需要明白什麼是DOM?

DOM(Document Object Model),是一種文檔對象模型,DOM通常用於代表在HTML、XHTML和XML中的對象,使用DOM可以允許程序和腳本動態地訪問和更新文檔的內容、結構和樣式,本質就是一種樹狀的模型。

DOM型XSS是基於DOM文檔對象模型的一種漏洞,所以受客戶端瀏覽器的腳本代碼所影響,而不是想前面兩種會與服務器交互(不是解析,是交互)。

DOM型XSS由於是取決於輸出位置,並不取決於輸出環境,因此也可以說DOM型XSS既有可能是反射型的,也有可能是存儲型的,就是說它的輸出點是在DOM位置上。

這個類型有點抽象,說實話自己在瞭解到這個類型XSS時也是懵逼的很,看了這篇博文,大概懂了個一二:鏈接

就是說DOM型XSS只在瀏覽器上有惡意代碼纔算。

如果對三種類型的XSS還有不瞭解或者區分不開的讀者可以查看這個鏈接:鏈接在此

four、危害

個人覺得XSS與SQL注入是漏洞安全中兩個必不可少的話題,就像倚天劍和屠龍刀一樣,其危害可想而知。

以下是說可能涉及到的危害:

  • 1、盜取各類用戶帳號
  • 2、控制網站服務器數據
  • 3、盜竊所屬網站公司的商業價值資料
  • 4、非法轉賬
  • 5、傳播XSS跨站腳本蠕蟲
  • 6、結合其他漏洞進行綜合漏洞攻擊
  • 7、提升攻擊者權限
  • 8、控制受害者機器向其他網站發起攻擊
  • 9、網站掛馬

five、XSS攻擊流程

攻擊流程:

我們來假設一個情景:現在有一個網站,它可能有XSS漏洞,那麼攻擊流程可以如下:
1、先在文本框或者URL裏判斷這個輸入位是在HTML屬性裏面還是在屬性外面,如果是屬性裏面,那麼我們就需要對其進行閉合猜測,即:>、’>、">等等,並且可以利用未閉合的特點加入事件引發彈窗等現象,如果是在外面,那麼進入下一步
2、我們可以使用<script>alert(/xss/)</script>語句及其變種進行初步測試,如果有結果,那麼我們就進入第四步,如果沒有結果,那麼我們就進入下一步
3、使用特殊的方式方法對XSS防禦進行繞過,當繞過成功時進入下一步
4、對網站進行進一步滲透,並結合其他漏洞進行綜合滲透
5、整理數據,書寫漏洞報告

測試XSS:

  • 檢測XSS一般分兩種:手工檢查、全自動檢測

  • 手工檢查
    一般使用盲打的方式,就是不知道後臺代碼,靠自己的經驗去猜測,或者使用一些比較敏感的符號'<>"/()
    反正見到輸入框或者是URL參數就是加代碼。

  • 全自動檢測
    檢測工具:Appscan、AWVS、BurpSuite。。。

一些常見的腳本代碼函數:

<script>alert(/xss/)</script>		alert()方法用於顯示帶有指定消息和確認按鈕的警告框
"><script>alert(/xss/)</script>		對頁面屬性的閉合操作
document.cookie					顯示當前頁面的cookie
window.location.hostname		返回Web主機的域名
window.location.pathname 		返回當前頁面的路徑和文件名
window.location.port			返回Web主機的端口(80或443)
window.location.protocol 		返回所使用的Web協議(http:或https:)
window.location.href   			返回當前顯示的文檔的完整URL 
onload                  一張頁面或一幅圖像完成加載
onsubmit              	確認按鈕被點擊觸發
onmousemove				鼠標移動到相應位置觸發
onerror                 在加載文檔或圖像時發生錯誤

xss-labs-master靶機攻略

攻略地址:鏈接在此

Six、防禦措施

  • 1、對任何用戶的輸入與輸出都採取不信任
  • 2、對特殊符號及特殊語句進行的嚴格過濾
  • 3、設置黑名單與白名單
  • 4、在開發時開發人員嚴格設置WEB安全編碼規範
  • 5、對cookie進行特殊防禦
  • 6、對進行網頁編碼實體化
  • 7、對Session標記、驗證碼或者HTTP頭的檢查

防禦措施說白了,就是對任何用戶都採取不信任。

後語:我們不是網絡上面的破壞者,而是網絡世界的維護者,我們是白帽子,也是紅帽子!

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