原理
XSS漏洞是攻擊者將惡意代碼注入到合法網頁中,當用戶瀏覽該頁面時,惡意代碼會被執行,從而獲取用戶敏感資訊或進行其他攻擊,
形成原因
網站對用戶輸入資料的過濾不嚴格或不完備,攻擊者可以根據這個漏洞向網站提交惡意代碼,然后再將這些代碼傳播給其他用戶,從而造成危害,
防御措施
- 輸入過濾:在網站接收用戶輸入資料之前,需要對輸入資料進行過濾,例如,可以使用編碼標記來過濾HTML、JavaScript和CSS等標記語言,
- 輸出編碼:對于顯示在頁面上的輸入內容,需要進行輸出編碼,以避免JavaScript腳本的注入攻擊,例如,可以使用Escape函式或EncodeURIComponent函式來對特殊字符進行編碼,
- cookie安全:通過對Cookie的設定來限制客戶端對Cookie的讀取和修改,例如,使用HttpOnly標志可以禁止腳本訪問Cookie,從而有效降低攻擊的風險,
- 安全編程:開發人員應該牢記安全編程的原則,例如使用白名單驗證策略、禁止直接操作DOM等規則,以避免開發程序中出現安全漏洞,
突破方式
- 利用漏洞:攻擊者使用已知的或未公開的漏洞來突破網站的XSS防御措施,從而成功注入惡意腳本,
- 釣魚式攻擊(Phishing):攻擊者通過偽造合法的郵件、網站、電話等方式引誘用戶主動點擊鏈接進入釣魚網站,并注入惡意腳本,從而突破XSS防御系統,
- 反射型XSS攻擊:攻擊者向目標網站提交惡意腳本,然后將腳本放在URL中傳遞給受害用戶,當用戶訪問這個URL時,惡意腳本就會被執行,攻擊成功,
- 存盤型XSS攻擊:攻擊者將惡意腳本存盤到目標網站的資料庫中,在用戶訪問受影響的頁面時,惡意腳本會從服務器端傳遞給用戶并在用戶瀏覽器上執行,—輾轉相除法,(本質上Base64編碼是64進制,Base58編碼是58進制)
Reflected型-XSS
-
【Low】級別
查看原始碼,發現沒有任何過濾,就是直接把用戶輸入的內容反射給瀏覽器,

這里直接在輸入框里面輸入代碼:<script>alert("GXY")</script>,

-
【Medium】級別
查看原始碼如下圖所示,下圖方框中的代碼作用是替換name中的出現的<script>,那就可以通過改變<script>的大小寫來繞過,

原始碼是通過referrer這個欄位的引數進行判斷的,通常情況下在增加referrer驗證時就是網站本省當前頁面的ip地址,這里需要抓包看看相關資訊,
這里在輸入框里面可以輸入代碼:<SCRIPT>alert("GXY")</script>(這里的可以將<script>里面的任意字母改為大寫即可),此處也可以通過雙寫(即寫兩個嵌套的script)來繞過,即在輸入框里面輸入代碼:<s<script>cript> alert("GXY")</script>,

-
【High】級別
查看原始碼如下圖所以,這里i是正則運算式,表示in-casesensitive,即大小寫不敏感,然后代碼里面的(.*)看不太懂,去網上查找發現是正則運算式(“.”表示匹配除換行符\n之外的任何單字符,“*”表示零次或多次),“.*”意思就是任意字符出現零次或多次,以運算式a.*b為例,它將匹配最長的以a開始,以b結束的字串,

這里的輸入框就可以不用輸入<script>標簽,可以換成其他標簽輸入,這里我輸入的<body onl oad=alert’GXY’>,

Sort型-XSS
-
【Low】級別
這里在name輸入框里面隨意輸入一個代碼,然后在message輸入框里面輸入代碼<script>alert("GXY")</script>,

對于name欄,它的長度是有限制的,所以代碼不能完整的寫進去,解決辦法就是把這里的長度改大一些,直接F12,查看原始碼,在圖中位置更改長度,

然后再回到dvwa的界面,在name欄就可以輸入完整的代碼段,然后message里面的內容可以隨意寫,

-
【Medium】級別
仍然使用剛剛的構造,滲透失敗了,但是發現系統把<script>標簽過濾掉了,然后查看原始碼,可以看到,由于對message引數使用了htmlapecialchars函式進行編碼,因此無法再通過message引數注入XSS代碼,但是對于name引數,只限制了輸入長度,過濾了,
補充:strip_tags()函式:剝去字串中的HTML、XML以及PHP的標簽,但允許使用標簽;addslashes()函式:回傳再預定義字符(單引號、雙引號、反斜杠,NULL)之前添加反斜杠的字串,

這里由于name長度不能超過10,所以這里通過修改html原始碼把name的長度改大一些,(這里把長度10改成了10000),

然后在name欄里面就可以輸入完整的代碼,但是依然滲透失敗,于是參考之前做反射型XSS時的思路,采用大小寫混寫,居然成功了,

還可以使用工具burpsuit抓包解決,首先抓取到資料包后把代碼段(這里依舊是采用大小寫混寫模式)添加到圖中1的位置,然后點擊forward,

在瀏覽器中就可以看到剛剛對資料包操作后,瀏覽器給出的回應,

-
【High】級別
使用工具burpsuit抓包解決,首先抓取到資料包后把代碼段(這里采用其他標簽,我是用的<body>標簽)添加到圖中1的位置,然后點擊forward,

在瀏覽器中就可以看到剛剛對資料包操作后,瀏覽器給出的回應,

同樣的這里把name欄的長度改大一點,然后采用其他標簽的方式進行滲透,


轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/555825.html
標籤:其他
上一篇:Vulnhub之Cengbox 2靶機詳細測驗程序(利用不同的方法提權)
下一篇:返回列表
