文件包含
pikachu靶場 :六、文件包含漏洞
- 概述
- 本地文件包含漏洞
- 遠(yuǎn)程文件包含漏洞
概述
文件包含,是一個功能。
在各種開發(fā)語言中都提供了內(nèi)置的文件包含函數(shù),其可以使開發(fā)人員在一個代碼文件中直接包含(引入)另外一個代碼文件。
比如 在PHP中,提供了:
- 1
- 2
這些文件包含函數(shù),這些函數(shù)在代碼設(shè)計中被經(jīng)常使用到。
大多數(shù)情況下,文件包含函數(shù)中包含的代碼文件是固定的,因此也不會出現(xiàn)安全問題。
但是,有些時候,文件包含的代碼文件被寫成了一個變量,且這個變量可以由前端用戶傳進來,這種情況下,如果沒有做足夠的安全考慮,則可能會引發(fā)文件包含漏洞。
攻擊著會指定一個“意想不到”的文件讓包含函數(shù)去執(zhí)行,從而造成惡意操作。
根據(jù)不同的配置環(huán)境,文件包含漏洞分為如下兩種情況:
很多時候本地文件包含漏洞會結(jié)合一些特殊的文件上傳漏洞,從而形成更大的威力。
因此,在web應(yīng)用系統(tǒng)的功能設(shè)計上盡量不要讓前端用戶直接傳變量給包含函數(shù),如果非要這么做,也一定要做嚴(yán)格的白名單策略進行過濾。
本地文件包含漏洞
順便選擇一個選項。
觀察所構(gòu)造的url,可以看到,是傳了一個file1.php到后臺,后臺會指定的目標(biāo)文件進行對應(yīng)的操作(這些文件都是后臺自己存在的文件)。
- 1
所以如果是 Linux 環(huán)境,我們可以 “…/” 的方式進行目錄跳轉(zhuǎn),讀取其他目錄下的文件
../../../../../../../../etc/passwd- 1
如果是 Windows 環(huán)境,也類似
../../../../Windows/System32/drivers/etc/hosts- 1
遠(yuǎn)程文件包含漏洞
先在本地編寫好一句話木馬,開啟phpstudy,把 includer 和 require 參數(shù)開啟。
題目只允許包含txt文件,所以我們還需編寫個利用shell.php的txt文件,放在同一級目錄下。
構(gòu)造漏洞代碼。
- 1
提交之后我們的遠(yuǎn)程服務(wù)器上會多出一個文件,這個文件一般在同級目錄下
這時候我們就可以利用我們上傳的 php 文件進行相關(guān)的操作,或菜刀連接。
總結(jié)