能夠發現90%以上XSS漏洞的7個主要的XSS案例。

在閱讀有關XSS的材料時,我們通常會看到經典的<script> alert(1)</ script>作爲這種漏洞的證明(PoC –概念證明)。儘管確實如此,但它並沒有超出此範圍,這使得該領域的新手可以尋求更多解決方案來應對現實情況。

 

因此,這是每個人都應該知道能夠利用那裏的絕大多數XSS缺陷的7種情況。建立了一個網頁來顯示它們的變化(單引號或雙引號)來進行訓練(單擊以轉到它):

 

 

在源代碼的開頭,有一個HTML註釋,其中包含用於觸發每種情況的所有參數。它們都適用於GET和POST請求。

您可能會注意到,所有情況都是基於源的,這意味着注入總是出現在HTTP響應正文中檢索到的源代碼中。獨立於被反映或存儲的類型,這裏重要的是它們在DISPLAYED時出現的上下文,因此我們將始終使用被反映的作爲主要示例。有些XSS缺陷不會出現在源代碼中,而基於DOM的缺陷不會在此處涵蓋。

請記住,僅在沒有本地XSS過濾的瀏覽器(例如Mozilla Firefox)中嘗試以下示例。

1. URL反射

當URL在源代碼中以某種方式反映時,我們可以向其添加自己的XSS向量/有效載荷。對於PHP頁面,可以使用斜槓(/)在頁面名稱後的URL中添加任何內容(無需更改)。

1. http://brutelogic.com.br/xss.php/」><svg onload = alert(1)>

需要使用前導標籤(「>」)來突破當前標籤,以便插入新標籤。

 

儘管使用不同語言有多種原因(反射可能也會出現在路徑或URL參數中),但對於PHP來說,罪魁禍首通常是提交表單的操作字段中的全局變量$ _SERVER [「 PHP_SELF」]。

2.簡單的HTMLi(HTML注入)

最簡單的輸入就是在現有標籤之間或之後的代碼中反映出來的。無需轉義或破壞任何內容,任何簡單的XSS向量(例如<tag handler = jsCode>形式的向量)都可以完成工作。

2. http://brutelogic.com.br/xss.php?a=<svg onload = alert(1)>

 

 

3.內聯HTMLi

幾乎和上一個一樣簡單,但帶有一個小寫的「>」以打破當前標籤。

3. http://brutelogic.com.br/xss.php?b1=」><svg onload = alert(1)>

 

4.內聯HTMLi:沒有標籤破損

當輸入置於HTML屬性中並且過濾的字符大於(())時,就不可能像上一種情況那樣突破當前標記。

 

 

因此,我們使用適合於我們要注入的標籤的事件處理程序,例如:

4. http://brutelogic.com.br/xss.php?b3=」 onmouseover = alert(1)//

這將關閉該值,併爲插入onmouseover事件處理程序留出空間。指向alert(1)後跟雙斜槓以註釋掉懸掛的引號,當受害者將鼠標指向受影響的輸入字段時,將觸發js彈出窗口。

 

 

5. HTMLs in Js(JavaScript)塊

輸入有時會落入javascript塊(腳本標籤)中,通常是代碼中某些變量的值。但是,因爲HTML標籤在瀏覽器的解析中具有優先權,所以我們可以簡單地終止該塊並插入一個新標籤。

5. http://brutelogic.com.br/xss.php?c1=</script><svg onload = alert(1)>

 

 

6.簡單的Js注入

如果以某種方式過濾了腳本標記,則先前的利用將失敗。

 

 

因此,方法是注入JavaScript代碼,同時遵守語法。一種已知的方法是通過將易受攻擊的變量的值「連接」到我們要執行的代碼。因爲我們不允許任何引號掛起,所以我們首先中斷,將其連接到我們的代碼(帶有減號),然後進行相反的操作(連接並插入一個引號)以獲取有效的javascript語法。

6. http://brutelogic.com.br/xss.php?c3='-alert(1)-'

 

 

7.逃脫的Js注射

在前一種情況下,如果用反斜槓(\)對引號(負責變量值的突破)進行轉義,則注入將不起作用(語法無效)。

 

 

爲此,我們有一個小技巧:逃脫。我們插入一個前導反斜槓以逃避添加的反斜槓,然後引用將起作用。在「連接」到所需的js代碼之後,我們需要註釋掉其餘部分,因爲在注入的其餘部分無法重複該過程。

7. http://brutelogic.com.br/xss.php?c5=\'-alert(1)//