二、详解 DVWA_Reflected反射型XSS
生活随笔
收集整理的這篇文章主要介紹了
二、详解 DVWA_Reflected反射型XSS
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
創建時間:2022年5月15日17:01:18
作者:在下小黃
存儲區:URL
插入點:HTML
- 需要向web頁面注入惡意代碼;
- 這些惡意代碼能夠被瀏覽器成功的執行
- 反射型XSS,顧名思義在于“反射”這個一來一回的過程。
- 反射型XSS的觸發有后端的參與,而之所以觸發XSS是因為后端解析用戶在前端輸入的帶有XSS性質的腳本或者腳本的data URI編碼,后端解析用戶輸入處理后返回給前端,由瀏覽器解析這段XSS腳本,觸發XSS漏洞。
- 因此如果要避免反射性XSS,則必須需要后端的協調,在后端解析前端的數據時首先做相關的字串檢測和轉義處理;同時前端同樣也許針對用戶的數據做excape轉義,保證數據源的可靠性
基本原理:就是通過給別人發送帶有惡意腳本代碼參數的URL,當URL地址被打開時,特定的代碼參數會被HTML解析,執行,如此就可以獲取用戶的COOIKE,進而盜號登陸。
特點是:非持久化 必須用戶點擊帶有特定參數的鏈接才能引起。
XSS反射型攻擊,惡意代碼并沒有保存在目標網站,通過引誘用戶點擊一個鏈接到目標網站的惡意鏈接來實施攻擊的。
一、Reflected Low 級別:
- 前端負責輸入,后端接收到name參數后沒有防范措施,直接打印在屏幕上。(echo)
- <script>alert('xss')</script>
二、Reflected Medium 級別:
- 輸入<scri<script>pt>alert('xss')</script>
- 另一種方法,大小寫混淆繞過:
- 輸入:<SCriPt>alert(/xss/)</ScRipt>
- 輸入其他標簽,如<IMG src=1 onerror=alert(document.cookie)>
三、Reflected High 級別:
- 輸入<script>alert('xss')</script>
- <script>被過濾了
- 構造出<scri<script>pt>alalertert('xss')</scr</script>ipt>
- 發現無法提交 猜測對提交的數據長度做了限制
- 源碼對任何形式的script做了過濾
- 所以可以采用不使用script的方式。
- 比如利用 img 的 onerror 函數 ,意思是說,如果圖片的地址是錯誤的,就執行alert(1)
- 函數使用正則表達式的搜索和替換,這樣使得雙寫繞過和大小寫混淆不可行。
- 我們可以考慮通過img、body等標簽的事件或者iframe等標簽的src注入惡意的js代碼。
- 輸入:<img src=1 onerror=alert(/xss/)>
四、Reflected Impossible 級別:
<?php// Is there any input? if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {// Check Anti-CSRF tokencheckToken( $_REQUEST[ 'user_token' ], $_SESSION[ 'session_token' ], 'index.php' );// Get input$name = htmlspecialchars( $_GET[ 'name' ] );// Feedback for end userecho "<pre>Hello ${name}</pre>"; }// Generate Anti-CSRF token generateSessionToken();?> ------------------------------------------------------------------------------------- htmlspecialchars() 函數把預定義的字符轉換為 HTML 實體。 預定義的字符是: & (和號)成為 & " (雙引號)成為 " ' (單引號)成為 ' < (小于)成為 < > (大于)成為 >雖然利用了htmlspecialchars()函數將用戶的輸入進行過濾,但是在特定情況下需要用戶輸入一些被過濾,會丟失原始數據。且htmlspecialchars本質也是黑名單過濾,沒有絕對安全簡單來說:就是直接輸出- 在 HTML 中,某些字符是預留的。
- 在 HTML 中不能使用小于號(<)和大于號(>),這是因為瀏覽器會誤認為它們是標簽,當然在HTML中還有其他實體。
- 如果希望正確地顯示預留字符,我們必須在HTML源代碼中使用字符實體(character entities)。
- 如需顯示小于號,我們必須這樣寫:< 或 <使用實體名而不是數字的好處是,名稱易于記憶。不過壞處是,瀏覽器也許并不支持所有實體名稱(對實體數字的支持卻很好)。
于號(>),這是因為瀏覽器會誤認為它們是標簽,當然在HTML中還有其他實體。 - 如果希望正確地顯示預留字符,我們必須在HTML源代碼中使用字符實體(character entities)。
- 如需顯示小于號,我們必須這樣寫:< 或 <使用實體名而不是數字的好處是,名稱易于記憶。不過壞處是,瀏覽器也許并不支持所有實體名稱(對實體數字的支持卻很好)。
總結
以上是生活随笔為你收集整理的二、详解 DVWA_Reflected反射型XSS的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java 抽象工厂模式(类图及实现)
- 下一篇: vb6实现下载带进度