XSS 漏洞驗證的方式

    通常XSS漏洞驗證的總結,但對於DOM型的XSS漏洞接觸得比較少,本身這方面的東西少得可憐,不太瞭解,後面還須要總結的 css

幾種狀況驗證方式: express

1. 參數值放在標籤屬性值中: 函數

    (1) 事件屬性:可直接輸入腳本驗證; 編碼

    (2) style屬性:經過expression引入腳本(根據是否對分號、冒號及固定結構進行過濾構造不一樣的結構); spa

    (3) 通常屬性:經過引號把原屬性值進行截斷,構造出事件屬性或style屬性(若是是隱藏域的話通常構造style屬性)。 orm

2. 參數值放在普通標籤(非script標籤)中: seo

(1) 經過尖括號引入新的標籤(兩類:容許script、不容許script); 事件

3. 參數值放在script標籤中: ip

    (1) 對尖括號進行過濾:根據參數所在位置上下文結構構造數據: 字符串

        a. 未對引號、分號、逗號和冒號進行過濾:任意構造;

        b. 引號未進行過濾分號、逗號和冒號部分過濾:根據上下文進行構造(通常先閉合原有引號)

        c. 引號進行過濾,參數放在引號中:無解;

    (2) 對尖括號不進行過濾:閉合原有script標籤,引入新的script標籤。

驗證過濾不徹底狀況:

1. 黑名單過濾驗證:

    (1) 對expression過濾:插入混淆字符繞過:在css中,/**/是註釋字符,除了/**/外,字符」\」和結束符」\0″也是被忽略的,能夠用來混淆字符(這個直接引用別人的,但驗證過了,OK了)

    (2) 對於長度的限制:可經過分批加入,但要在同一頁面(如:<script>var z = z + "alert"</script>)。

2. 特殊字符過濾注意:

    (1) 對單引號進行過濾:

        a. 注入腳本實例: 

        <div onmouseover="a='al'+'ert(2)';e=eval;e(a);">mouse here!

        b. 修復1:對單引號進行過濾或轉義

        c. 繞過實例:

        <div onmouseover="a=&#39;al&#39;+&#39;ert(2)&#39;;e=eval;e(a);">mouse here!

        d. 繞過原理:ASCII編碼在屬性值中會轉爲相應字符(即:&#39; ->')。

    (2) 經過事件傳遞的轉義字符串發生二次轉義:

        a. 注入腳本實例:

        <div onmouseover="test('&lt;ScriPt&gt;alert(007)&lt;/ScrIpt&gt;')">

        b. test函數接收到的字符經轉義變爲:<script>alert(007)</script>

相關文章
相關標籤/搜索