DVWA-Reflected Cross Site Scripting (XSS)
實驗環(huán)境:
DVWA靶機:172.16.12.10 靶場用戶名:admin 密碼:123
windos攻擊機:172.16.12.7
kali攻擊機:172.16.12.30
實驗步驟:
反射型Xss <全稱跨站腳本攻擊,是一種在web應用中的計算機安全漏洞,它允許惡意web用戶將代碼植入到提供給其它用戶使用的頁面中。
其實反射型和DOM型的XSS差別主要在于,反射型是會往后臺服務器發(fā)送請求,而DOM型直接在前端進行解析;兩者都是一次性的
一、Low級
1、源碼分析
<?phpheader ("X-XSS-Protection: 0");// Is there any input? // arrary_key_exists()函數(shù):判斷$_GET的值中是否存在“name”鍵名。并且$_GET[‘name’]的值是否不為空,滿足這些條件,直接輸出下面的輸出語句。if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {// Feedback for end userecho '<pre>Hello ' . $_GET[ 'name' ] . '</pre>'; }?>可以看到,代碼直接引用了name參數(shù),并沒有任何的過濾與檢查,存在明顯的XSS漏洞
2、漏洞復現(xiàn)
輸入<script>alert(/xss/)</script>,直接彈窗
抓包看到的XSS對應的鏈接如下:
二、Medium級
1、源碼分析
<?phpheader ("X-XSS-Protection: 0");// Is there any input? if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {// Get input //將輸入中的<script>轉化為空$name = str_replace( '<script>', '', $_GET[ 'name' ] );// Feedback for end userecho "<pre>Hello ${name}</pre>"; }?>可以看到,這里對輸入進行了過濾,基于黑名單的思想,使用str_replace函數(shù)將輸入中的<script>刪除,這種防護機制是可以被輕松繞過的。
2、漏洞利用
1)雙寫繞過
輸入 <sc<script>ript>alert(/xss/)</script> ,成功彈窗
2)大小寫繞過
輸入 <ScRipt>alert(/xss/)</script> , 成功彈窗
三、Hign級
1、源碼分析
<?phpheader ("X-XSS-Protection: 0");// Is there any input? if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {// Get input //使用通配符,完全匹配script*N,所以有關script的標簽全被過濾$name = preg_replace( '/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i', '', $_GET[ 'name' ] );// Feedback for end userecho "<pre>Hello ${name}</pre>"; }?>可以看到,High級別的代碼同樣使用黑名單過濾輸入,preg_replace()函數(shù)
用于正則表達式的搜索和替換,這使得雙寫繞過、大小寫混淆繞過(正則表達式中i表示不區(qū)分大小寫)不再有效
2、漏洞利用
雖然無法使用<script>標簽注入XSS代碼,但是可以通過img、body等標簽
的事件或者iframe等標簽的src注入惡意的js代碼。
輸入<imgsrc=1οnerrοr=alert(/xss/)>,成功彈框
四、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();?>可以看到,Impossible級別的代碼使用htmlspecialchars函數(shù)把預定義的字
符&、”、’、<、>轉換為HTML實體,防止瀏覽器將其作為HTML元素。
總結
以上是生活随笔為你收集整理的DVWA-Reflected Cross Site Scripting (XSS)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 实用的BeanUtils工具类
- 下一篇: 日常提醒(delphi源码)