1. 程式人生 > >存儲型xss調研

存儲型xss調研

url 不同 com font 數字 提交 con 而是 mage

概念

存儲型XSS,持久化,代碼是存儲在服務器中的,如在個人信息或發表文章等地方,加入代碼,如果沒有過濾或過濾不嚴,那麽這些代碼將儲存到服務器中,用戶訪問該頁面的時候觸發代碼執行。

常見的xss攻擊方法

  1. 繞過XSS-Filter,利用<>標簽註入Html/JavaScript代碼;

  2. 利用HTML標簽的屬性值進行xss攻擊。例如:<img src=javascript:alert(xss)/>;(當然並不是所有的Web瀏覽器都支持Javascript偽協議,所以此類XSS攻擊具有一定的局限性)

  3. 空格、回車和Tab。如果XSS Filter

僅僅將敏感的輸入字符列入黑名單,比如javascript,用戶可以利用空格、回車和Tab鍵來繞過過濾,例如:<img src=javas cript:alert(/xss/);/>

  4. 利用事件來執行跨站腳本。例如:<img src=#onerror= alert(1)/>,當src錯誤的視乎就會執行onerror事件;

  5. 利用CSS跨站。例如:body {backgrund-image: url(javascript:alert(xss))}

  6. 擾亂過濾規則。例如:<IMG SRC=javaSCript: alert(/xss/);

/>

  7. 利用字符編碼,透過這種技巧,不僅能讓XSS代碼繞過服務端的過濾,還能更好地隱藏Shellcode;(JS支持unicodeeacapes、十六進制、十進制等編碼形式)

  8. 拆分跨站法,將xss攻擊的代碼拆分開來,適用於應用程序沒有過濾 XSS關鍵字符(如<>)卻對輸入字符長度有限制的情況下;

  9. DOM型的XSS主要是由客戶端的腳本通過DOM動態地輸出數據到頁面上,它不依賴於提交數據到服務器,而是從客戶端獲得DOM中的數據在本地執行。容易導致DOM型的XSS的輸入源包括:Document.URLLocation(.pathname|.href|.search|.hash)

Document.referrerWindow.nameDocument.cookielocalStorage/globalStorage

傳統XSS防禦手段

如何根治XSS,這裏可以負責任的告訴你,沒有一種防禦方法是通用萬能的。XSS攻擊方式根據漏洞出現位置、瀏覽器環境、業務環境、攻擊目的、WebServer類型的不同而變化(所以XSSer們往往稱自己為猥瑣流)。它不像其他web漏洞上傳、SQL註入、文件包涵,僅僅需要在服務器上做下過濾(甚至是安裝一個統一過濾腳本或者WAF)就可以成功防禦的,所以根據實際情況,針對XSS防禦措施也是不同的,大體來說,有以下幾點:

1.服務器端過濾

服務器端轉義輸入的左右尖括號,HTML標簽進行編碼這是主流的防禦XSS的方法可有效防禦一般的XSS攻擊。

2.前端過濾

把變量輸出到頁面時要做好相關的編碼轉義工作,如要輸出到 <script>中,可以進行JS編碼;要輸出到HTML內容或屬性,則進行HTML編碼處理。

輸入過濾,對用戶提交的數據進行有效性驗證,僅接受指定長度範圍內並符合我們期望格式的的內容提交,阻止或者忽略除此外的其他任何數據。比如:電話號碼必須是數字和中劃線組成,而且要設定長度上限。過濾一些些常見的敏感字符,例如:< > ‘ “ & # \ javascript expression "onclick=" "onfocus";過濾或移除特殊的Html標簽, 例如: <script>, <iframe> , < for <, > for >, " for;過濾JavaScript 事件的標簽,例如 "onclick=", "onfocus" 等等。

輸出編碼,當需要將一個字符串輸出到Web網頁時,同時又不確定這個字符串中是否包括XSS特殊字符(如< > &‘”等),為了確保輸出內容的完整性和正確性,可以使用編碼(HTMLEncode)進行處理

3.HttpOnly

在服務器端做配置,在響應頭裏對cookie中的session進行httponly標記被標記的session無法被js讀出因此可以有效防禦針對偷取cookieXSS攻擊。

4.Content Security Policy (CSP)

CSP策略規範了網頁中某個標簽所能加載的第三方域,從協議層把一些存在安全隱患的用法默認給幹掉,把同源同域更發揮到了極致,結合禁止內聯腳本的機制,可以有效防禦大部分XSS攻擊。

缺點: 需要在服務器端進行配置,而且一旦配置不當,正常業務也會受到影響。配置不嚴格又會導致繞過。對於大型的、復雜的網站業務,維護成本較高。

5.XSS防火墻技術

這種技術目前正處於概念階段,並沒有大範圍投入使用,其思路是用js代碼來對當前網頁進行防護防止發生XSS行為。而且設計理念也是各有不同。

像百度FEX設計的這款模擬了CSP策略實現了對XSS的防禦。

http://fex.baidu.com/blog/2014/06/xss-frontend-firewall-4/

存儲型xss調研