二、详解 DVWA_Reflected反射型XSS
生活随笔
收集整理的這篇文章主要介紹了
二、详解 DVWA_Reflected反射型XSS
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
創(chuàng)建時(shí)間:2022年5月15日17:01:18
作者:在下小黃
存儲(chǔ)區(qū):URL
插入點(diǎn):HTML
- 需要向web頁(yè)面注入惡意代碼;
- 這些惡意代碼能夠被瀏覽器成功的執(zhí)行
- 反射型XSS,顧名思義在于“反射”這個(gè)一來(lái)一回的過(guò)程。
- 反射型XSS的觸發(fā)有后端的參與,而之所以觸發(fā)XSS是因?yàn)楹蠖私馕鲇脩?hù)在前端輸入的帶有XSS性質(zhì)的腳本或者腳本的data URI編碼,后端解析用戶(hù)輸入處理后返回給前端,由瀏覽器解析這段XSS腳本,觸發(fā)XSS漏洞。
- 因此如果要避免反射性XSS,則必須需要后端的協(xié)調(diào),在后端解析前端的數(shù)據(jù)時(shí)首先做相關(guān)的字串檢測(cè)和轉(zhuǎn)義處理;同時(shí)前端同樣也許針對(duì)用戶(hù)的數(shù)據(jù)做excape轉(zhuǎn)義,保證數(shù)據(jù)源的可靠性
基本原理:就是通過(guò)給別人發(fā)送帶有惡意腳本代碼參數(shù)的URL,當(dāng)URL地址被打開(kāi)時(shí),特定的代碼參數(shù)會(huì)被HTML解析,執(zhí)行,如此就可以獲取用戶(hù)的COOIKE,進(jìn)而盜號(hào)登陸。
特點(diǎn)是:非持久化 必須用戶(hù)點(diǎn)擊帶有特定參數(shù)的鏈接才能引起。
XSS反射型攻擊,惡意代碼并沒(méi)有保存在目標(biāo)網(wǎng)站,通過(guò)引誘用戶(hù)點(diǎn)擊一個(gè)鏈接到目標(biāo)網(wǎng)站的惡意鏈接來(lái)實(shí)施攻擊的。
一、Reflected Low 級(jí)別:
- 前端負(fù)責(zé)輸入,后端接收到name參數(shù)后沒(méi)有防范措施,直接打印在屏幕上。(echo)
- <script>alert('xss')</script>
二、Reflected Medium 級(jí)別:
- 輸入<scri<script>pt>alert('xss')</script>
- 另一種方法,大小寫(xiě)混淆繞過(guò):
- 輸入:<SCriPt>alert(/xss/)</ScRipt>
- 輸入其他標(biāo)簽,如<IMG src=1 onerror=alert(document.cookie)>
三、Reflected High 級(jí)別:
- 輸入<script>alert('xss')</script>
- <script>被過(guò)濾了
- 構(gòu)造出<scri<script>pt>alalertert('xss')</scr</script>ipt>
- 發(fā)現(xiàn)無(wú)法提交 猜測(cè)對(duì)提交的數(shù)據(jù)長(zhǎng)度做了限制
- 源碼對(duì)任何形式的script做了過(guò)濾
- 所以可以采用不使用script的方式。
- 比如利用 img 的 onerror 函數(shù) ,意思是說(shuō),如果圖片的地址是錯(cuò)誤的,就執(zhí)行alert(1)
- 函數(shù)使用正則表達(dá)式的搜索和替換,這樣使得雙寫(xiě)繞過(guò)和大小寫(xiě)混淆不可行。
- 我們可以考慮通過(guò)img、body等標(biāo)簽的事件或者iframe等標(biāo)簽的src注入惡意的js代碼。
- 輸入:<img src=1 onerror=alert(/xss/)>
四、Reflected Impossible 級(jí)別:
<?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() 函數(shù)把預(yù)定義的字符轉(zhuǎn)換為 HTML 實(shí)體。 預(yù)定義的字符是: & (和號(hào))成為 & " (雙引號(hào))成為 " ' (單引號(hào))成為 ' < (小于)成為 < > (大于)成為 >雖然利用了htmlspecialchars()函數(shù)將用戶(hù)的輸入進(jìn)行過(guò)濾,但是在特定情況下需要用戶(hù)輸入一些被過(guò)濾,會(huì)丟失原始數(shù)據(jù)。且htmlspecialchars本質(zhì)也是黑名單過(guò)濾,沒(méi)有絕對(duì)安全簡(jiǎn)單來(lái)說(shuō):就是直接輸出- 在 HTML 中,某些字符是預(yù)留的。
- 在 HTML 中不能使用小于號(hào)(<)和大于號(hào)(>),這是因?yàn)闉g覽器會(huì)誤認(rèn)為它們是標(biāo)簽,當(dāng)然在HTML中還有其他實(shí)體。
- 如果希望正確地顯示預(yù)留字符,我們必須在HTML源代碼中使用字符實(shí)體(character entities)。
- 如需顯示小于號(hào),我們必須這樣寫(xiě):< 或 <使用實(shí)體名而不是數(shù)字的好處是,名稱(chēng)易于記憶。不過(guò)壞處是,瀏覽器也許并不支持所有實(shí)體名稱(chēng)(對(duì)實(shí)體數(shù)字的支持卻很好)。
于號(hào)(>),這是因?yàn)闉g覽器會(huì)誤認(rèn)為它們是標(biāo)簽,當(dāng)然在HTML中還有其他實(shí)體。 - 如果希望正確地顯示預(yù)留字符,我們必須在HTML源代碼中使用字符實(shí)體(character entities)。
- 如需顯示小于號(hào),我們必須這樣寫(xiě):< 或 <使用實(shí)體名而不是數(shù)字的好處是,名稱(chēng)易于記憶。不過(guò)壞處是,瀏覽器也許并不支持所有實(shí)體名稱(chēng)(對(duì)實(shí)體數(shù)字的支持卻很好)。
總結(jié)
以上是生活随笔為你收集整理的二、详解 DVWA_Reflected反射型XSS的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Java 抽象工厂模式(类图及实现)
- 下一篇: vb6实现下载带进度