Web安全之XSS漏洞
同源策略
同源策略(Same-Origin Policy),就是為了保證互聯網之中,各類資源的安全性而誕生的產物,它實際上是一個眾多瀏覽器廠商共同遵守的約定。同源策略是瀏覽器中最基本的安全功能。缺少同源策略,很多瀏覽器的常規功能都會受到影響,可以說Web是構建在同源策略基礎之上的。
如果Web世界沒有同源策略,當你登錄FreeBuf賬號并打開另一個站點時,這個站點上的JavaScript可以跨域讀取你的FreeBuf賬號數據,這樣的話整個WEB世界就沒有 隱私而言。
瀏覽器的同源策略,限制了不同源的“document”或是腳本,對當前“document”或資源及其屬性的讀寫權限。
同源策略是一種安全思想,但并不是統一的規范體系。不同語言腳本以及插件,它們的同源策略規則也不盡相同,不可一概而論。
javaScript中的同源,需要對比 兩者中的協議、域名、端口。三者完全相同才認為是同源的,否則即是來自不同源的內容。
在HTML語言中,有部分標簽在引用第三方資源時,不受同源策略的限制:
上述這種帶src屬性的標簽,在加載時,實際是生成一條GET請求,向指定服務器申請資源。
前言
跨站腳本攻擊(Cross Site Scripting)的縮寫,為了不和層疊樣式表(Cascading Style Sheets, CSS)的縮寫混淆,故將跨站腳本攻擊縮寫為XSS。惡意攻擊者往Web頁面里插入惡意Script代碼,當用戶瀏覽該頁之時,嵌入其中Web里面的Script代碼會被執行,從而達到惡意攻擊用戶的目的。
- 跨站: 從字面來分析,因為這個“跨”實際上是瀏覽器的特性,而不是缺陷,造成“跨”這樣的假象是因為絕大多數XSS攻擊都會采用嵌入一段遠程或者第三方域上的腳本資源。
- 腳本: 跨站腳本重點已經不在“跨站”這個字母上,而是“腳本”。腳本主要是有兩個:JavaScript和ActionScript。
XSS的原理
用戶提交的數據沒有過濾,或者過濾不嚴格,輸出到網頁中 ,導致可以構造執行JS代碼,或者修改網頁內容。
XSS的危害
XSS沒有危害,很少有人去關注它。對于那些半年沒有更新的小企業網站來說,發生XSS漏洞幾乎沒有什么用。但是在各類的社交平臺,郵件系統,開源流行的Web應用,BBS,微博等場景中,造成的殺傷力卻十分強大。
XSS的危害
- 盜取用戶或者管理員的Cookie
- XSS Worm
- 掛馬(水坑攻擊)
- 有局限性的鍵盤記錄
…
XSS的分類
- 反射型XSS
- 存儲型XSS
- DOM XSS
- Flash XSS
反射型XSS
反射型XSS又稱為非持久型XSS。XSS代碼出現在URL參數或者請求中,瀏覽器發出請求時,參數值作為輸入提交到服務器,服
務器接受處理后參數值出現在響應的HTML中,最后瀏覽器解析執行了這段XSS代碼。
反射型XSS利用過程
存儲型XSS
存儲型XSS,又稱持久型XSS,他和反射型XSS最大的不同就是,攻擊腳本將被永久地存放在目標服務器的數據庫或文件中。
DOM XSS
DOM XSS與反射型XSS和存儲型XSS的差別是在于DOM XSS的代碼不需要服務器解析響應的直接參與,觸發XSS靠的是瀏覽器DOM解析器的解析,可以完全認為是客戶端的事情。
Flash XSS
利用的是網頁上flash文件缺陷來執行js腳本,一般是反射型xss
XSS手動挖掘
- 看URL參數輸出的位置
- 看輸入框輸出位置
輸出點位置
輸出在標簽外
需要可以構造標簽,如果不能構造標簽就不存在XSS漏洞。
輸出到標簽中
如果輸出在"雙引號或者’單引號內部,需要能夠閉合引號,如果不能閉合引號,就需要看能否在當前的標簽屬性中執行js代碼,如果不能,就不存在XSS漏洞。
如果沒有輸出在"雙引號或者’單引號內部,或者可以閉合引號,可以構造一個新的屬性,使用新的屬性的值來執行JS代碼,比如事件屬性。
輸出到Script標簽中
- 如果輸出在"雙引號或者’單引號內部,需要能夠閉合引號,
- 如果不能閉合引號,需要看當前變量能不能innerHTML或者document.write,插入到網頁中,如果可以就可以構造XSS,如果沒有,就不存在XSS(引號內部可以使用unicode編碼, < 不能編碼)
- 如果輸出"雙引號或者’單引號內部,需要能夠閉合引號,如果可以閉合引號,就可以直接傳遞進去js代碼,使用注釋符號,注釋掉后面的js代碼就可以構造XSS
XSS防御
- 對XSS的防御需要根據實際情況對用戶的輸入進行嚴格的過濾。基于過濾的XSS防御方式通常可分為兩種:基于黑名單的過濾和基于白名單的過濾。后者的防御效果往往更好,對于用戶在白名單之外的輸入,可以直接忽略。在構造白名單的過程中需要保證在不影響用戶體驗的同時,盡可能杜絕一切不必要的輸入內容。
- 在cookie中加入httponly屬性可以在一定程度上保護用戶的cookie,減少出現XSS時損失
- (1,apache2.2.x;2.注冊網站,把攻擊者自己的加了httponly的cookie復制過去,補全信息)
- Flash XSS的修復需要對相應的flash進行修改或升級替換。
總結
以上是生活随笔為你收集整理的Web安全之XSS漏洞的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 常见的上传绕过以及解析漏洞
- 下一篇: Web安全之文件包含漏洞