DVWA篇之XSS反射型

1、什麼是XSS

    XSS***全稱跨站腳本***,XSS是一種在web應用中的計算機安全漏洞,它允許惡意web用戶將代碼植入到提供給其它用戶使用的頁面中。

XSS***分成兩類:

(1)、一類是來自內部的***,主要指的是利用程序自身的漏洞,構造跨站語句。
(2)、另一類則是來自外部的***,主要指的自己構造XSS跨站漏洞網頁或者尋找非目標機以外的有跨站漏洞的網頁。
如當我們要***一個站點,我們自己構造一個有跨站漏洞的網頁,然後構造跨站語句,通過結合其它技術,如社會工程學等,欺騙目標服務器的管理員打開。

XSS分爲:存儲型和反射型

    存儲型XSS:存儲型XSS,持久化,代碼是存儲在服務器中的,如在個人信息或發表文章等地方,加入代碼,如果沒有過濾或過濾不嚴,那麼這些代碼將儲存到服務器中。這種XSS比較危險,容易造成蠕蟲,盜竊cookie(雖然還有種DOM型XSS 但是也還是包括在存儲型XSS內)

    反射型XSS:非持久化,需要欺騙用戶自己去點擊鏈接才能觸發XSS代碼(服務器中沒有這樣的頁面和內容) 一般容易出現在搜索頁面

開始我們的實驗

        Low級別

1、構造我們常用的payload:<scrpit>alert(1)</script>

DVWA篇之XSS反射型
獲得彈框。不僅僅要做到***,分析一下原理
2、這裏可以直接查看源碼,點擊右下角的view source。查看源碼
DVWA篇之XSS反射型
源碼裏存在一個判斷語句,arrary_key_exists()函數判斷$_GET的值中是否存在“name”鍵名。並且$_GET[‘name’]的值是不是不爲空,滿足這些條件,直接輸出下面的輸出語句。
這串源碼沒有特別的地方,不存在其他處理函數,典型的xss可***源碼。所以可以直接用我們的payload***

    Medium級別

1、嘗試用第一種方法,看看有什麼不同
DVWA篇之XSS反射型
發現我們輸入進去的<script></script>標籤被過濾掉了,猜測利用了什麼過濾函數。既然它能夠將這個標籤過濾,我們就構造一個不用這個標籤的payload試一試。
2、構造payload:<img src=1 onerror=alert(1)>。
解釋:<img ..>標籤是添加一個圖片,src,指定圖片的url,onerror是指定加載圖片時如果出現錯誤則要執行的事件
這裏我們的圖片url肯定是錯誤的,這個彈框事件也必定會執行
使用我們的payload***一下試一試。
DVWA篇之XSS反射型
發生了彈框,可以看出,後臺處理的時候應該只過濾了<script>標籤
3、我們查看一下源碼:
DVWA篇之XSS反射型
我們可以看到,在將獲取到的name值得時候,經過str_replace()函數過濾,將name值中的<script>標籤轉化爲空。然後在將name值的結果輸出。
所以當我們使用low級別的payload的時候我們的<script>標籤被過濾掉。
4、特別注意的是這個函數也不太完美,因爲它區分大小寫。所以當我們使用low級別中的payload大寫的時候,一樣可以繞過它的過濾。我們試一下
Payload:<SCRIPT>alert(1)</SCRIPT>
DVWA篇之XSS反射型
一樣可以彈框,當然繞過的還有很多方式。
處理這樣的paylaod的時候最好再在前面加一個strtolower()函數,將傳遞的name值得字符統統改爲小寫。這樣就可以不管大小寫都能逃不出去。(只針對這一個payload)

    High級別

1、當我們輸入帶有<script>標籤的payload的時候,不管大小寫,過濾的什麼都不剩只有>,這是什麼情況,我們查看一下源碼:
DVWA篇之XSS反射型
這裏利用了preg_replace()函數,將包含<script的字符,不管大小寫,不管後面跟着1個或多個與之相同的字符都轉換爲空。

2、既然它過濾這樣的字符串,那我們就用<img >標籤。
Payload:<img src=1 onerror=alert(1)>
DVWA篇之XSS反射型
出現了彈框。

    Impossible級別

1、正如級別含義,不可能的,這個很難做到彈框
查看源碼
DVWA篇之XSS反射型
2、裏面處理$_GET[‘name’]的值得時候利用了函數htmlspecialchars(),將值裏面的預定義函數,都變成html實體
DVWA篇之XSS反射型
所以我們以上的payload都帶有<>,這個經過轉換之後是不會起作用的,也就不能夠造成彈框。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章