XSS漏洞的原理
簡介
xss表示Cross Site Scripting(跨站指令碼攻擊),它與SQL注入攻擊類似,SQL注入攻擊中以SQL語句作為使用者輸入,從而達到查詢/修改/刪除資料的目的,而在xss攻擊中,通過插入惡意指令碼,實現對使用者遊覽器的控制。
攻擊者往Web頁面裡插入惡意html標籤或者javascript程式碼。比如:攻擊者在論壇中放一個看似安全的連結,騙取使用者點選後,竊取cookie中的使用者私密資訊;或者攻擊者在論壇中加一個惡意表單,當用戶提交表單的時候,卻把資訊傳送到攻擊者的伺服器中,而不是使用者原本以為的信任站點。
xss漏洞分類
非持久型xss攻擊:顧名思義,非持久型xss攻擊是一次性的,僅對當次的頁面訪問產生影響。非持久型xss攻擊要求使用者訪問一個被攻擊者篡改後的連結,使用者訪問該連結時,被植入的攻擊指令碼被使用者遊覽器執行,從而達到攻擊目的。
持久型xss攻擊:持久型xss,會把攻擊者的資料儲存在伺服器端,攻擊行為將伴隨著攻擊資料一直存在。
xss也可以分成三類:
反射型:經過後端,不經過資料庫
儲存型:經過後端,經過資料庫
DOM型:不經過後端,DOM—based XSS漏洞是基於文件物件模型Document Objeet Model,DOM)的一種漏洞,dom – xss是通過url傳入引數去控制觸發的。
xss漏洞查詢方法
黑盒測試
所謂黑盒測試, 就是在不知道系統的程式碼和執行狀態的條件下,對系統進行的測試。在對XSS漏洞的檢測中,我們可以模擬黑客的攻擊手段,在所有可能的資料輸入介面處,嘗試 進行一些XSS注入。通過觀察注入後的引用這些資料的頁面,看其是否出現被注入的現象,即可確實是否存在XSS漏洞。比如我們可以用下面所列的一些指令碼來嘗試XSS注入:
1. ><script>alert(document.cookie)</script> 2. =’><script>alert(document.cookie)</script> 3. <script>alert(document.cookie)</script> 4. <script>alert(vulnerable)</script> 5. <script>alert(’XSS’)</script> 5. <imgsrc=/uploadfile/2015/0301/20150301105236644.png” nerror=”alert(’XSS’)”>
靜態分析
靜態分析方法屬於白盒測試方法的一種,它通過對Web應用的程式碼進行分析,從而發現其中可能存在的問題。
資料流分析
XSS 之所以產生,根本原因在於不安全的資料流, 使得使用者的輸入資料被直接嵌入到某些頁面中。比如PHP中的echo語句,就能夠將一些資料直接新增為 HTML頁面的一部分,如果這個資料是使用者注入了XSS指令碼的資料,則會導致產生XSS攻擊。因此,資料流分析的主要思想就是使用一些模型或者工具,分析 Web應用程式程式碼中的資料傳輸情況,從而發現其中存在的問題。
缺陷
1、耗時間
2、有一定機率不成功
3、沒有相應的軟體來完成自動化攻擊
4、前期需要基本的html、js功底,後期需要紮實的html、js、actionscript2/3.0等語言的功底
5、是一種被動的攻擊手法
6、對website有http-only、crossdomian.xml沒有用