pHp文件包含漏洞的形成、利用技巧及防范進(jìn)行了

2023-11-19    分類: 網(wǎng)站建設(shè)

摘要:本文對(duì)pHp文件包含漏洞的形成、利用技巧及防范進(jìn)行了詳細(xì)分析,并通過(guò)一個(gè)真實(shí)案例演示了如何利用pHp文件包含漏洞對(duì)目標(biāo)網(wǎng)站進(jìn)行滲透測(cè)試,最終成功獲取到網(wǎng)站的WebShell。

本文詳細(xì)分析了含有漏洞的pHp文件的形成、利用技術(shù)和防范,并通過(guò)一個(gè)真實(shí)案例演示了如何利用含有漏洞的pHp文件對(duì)目標(biāo)網(wǎng)站進(jìn)行滲透測(cè)試,最終成功獲取該網(wǎng)站。

pHp是一種非常流行的Web開(kāi)發(fā)語(yǔ)言,網(wǎng)上很多Web應(yīng)用都是用pHp開(kāi)發(fā)的。在使用pHp開(kāi)發(fā)的Web應(yīng)用中,包含漏洞的pHp文件是一個(gè)常見(jiàn)的漏洞,利用pHp文件包含漏洞入侵網(wǎng)站也是一種主流的攻擊方式。

pHp文件包含漏洞介紹

首先介紹一下什么是包含漏洞的文件。嚴(yán)格來(lái)說(shuō),文件包含漏洞是一種“代碼注入”。其原理是注入用戶可以控制的腳本或代碼,讓服務(wù)器執(zhí)行。“代碼注入”的典型代表是文件包含。文件包含漏洞可能出現(xiàn)在JSp、pHp、ASp等語(yǔ)言中,原理是一樣的。本文僅介紹pHp文件包含漏洞。

為了成功利用文件包含漏洞進(jìn)行攻擊,需要滿足以下兩個(gè)條件:

1.Web應(yīng)用采用include()等文件包含函數(shù)通過(guò)動(dòng)態(tài)變量的方式引入需要包含的文件
2.用戶能夠控制該動(dòng)態(tài)變量

在 pHp 中,有四個(gè)用于包含文件的函數(shù)。當(dāng)這些函數(shù)用于包含文件時(shí),將執(zhí)行文件中包含的 pHp 代碼。它們之間的區(qū)別解釋如下:

():當(dāng)使用該函數(shù)包含一個(gè)文件時(shí),只有在執(zhí)行到()函數(shù)的代碼時(shí)才會(huì)包含該文件。當(dāng)發(fā)生錯(cuò)誤時(shí),只會(huì)給出警告,并繼續(xù)執(zhí)行。

():功能與()相同,不同之處在于重復(fù)調(diào)用同一個(gè)文件時(shí),程序只調(diào)用一次。

():1.()和()的區(qū)別在于,如果()的執(zhí)行發(fā)生錯(cuò)誤,函數(shù)會(huì)輸出錯(cuò)誤信息并終止腳本。2. 當(dāng)使用()函數(shù)包含一個(gè)文件時(shí),程序一執(zhí)行就會(huì)立即調(diào)用該文件,只有在程序執(zhí)行到該函數(shù)時(shí)才會(huì)調(diào)用()。

():它的功能和()一樣,不同的是在重復(fù)調(diào)用同一個(gè)文件時(shí),程序只調(diào)用一次。

現(xiàn)在看一個(gè)包含代碼的簡(jiǎn)單文件,如下面的圖 1 所示。

圖1

從上面的代碼可以看出,得到變量$的值后,直接帶入()函數(shù)中,不做任何處理。存在一個(gè)包含漏洞的文件,我們可以利用這個(gè)漏洞查看系統(tǒng)中的任何文件。

讓我們實(shí)際測(cè)試一下。首先將pHp頁(yè)面上傳到Web服務(wù)器,讓它包含一個(gè)普通的txt文件。操作結(jié)果如下圖2所示。

圖2

然后我們把php代碼插入到txt文本中,看看結(jié)果?插入如下圖 3 所示的代碼。

圖 3

再次訪問(wèn),結(jié)果如下圖4所示。

圖 4

從上圖可以看出,文中的pHp代碼執(zhí)行成功。

利用該漏洞,我們可以查看系統(tǒng)中的任意文件,例如常用的“/etc/”文件,如圖5所示。

圖 5

pHp文件包含漏洞分為本地文件包含漏洞(LFI)和遠(yuǎn)程文件包含漏洞(RFI)??梢源蜷_(kāi)和包含本地文件的漏洞稱為本地文件包含漏洞。使用本地文件包含漏洞,可以查看系統(tǒng)中任意文件的內(nèi)容,也可以在有條件的情況下執(zhí)行命令。這在下面的漏洞利用技術(shù)部分中有詳細(xì)描述。

如果php.ini 的配置選項(xiàng)為ON,則文件包含功能可以加載遠(yuǎn)程文件。這種漏洞稱為遠(yuǎn)程文件包含漏洞。使用遠(yuǎn)程文件包含漏洞,可以直接執(zhí)行任意命令。在實(shí)際滲透攻擊過(guò)程中,攻擊者可以在自己的Web服務(wù)器上放置一個(gè)可執(zhí)行的惡意文件,通過(guò)目標(biāo)網(wǎng)站中包含漏洞的遠(yuǎn)程文件加載該文件php代碼執(zhí)行漏洞,從而達(dá)到執(zhí)行任意命令的目的。

文件包含漏洞利用技術(shù)

遠(yuǎn)程文件包含漏洞之所以能夠執(zhí)行命令,是因?yàn)楣粽呖梢宰远x包含文件的內(nèi)容。因此,如果本地文件包含漏洞,如果要執(zhí)行命令,還需要找到攻擊者可以控制內(nèi)容的本地文件。

目前常用的技術(shù)有以下幾種:

包含用戶上傳的文件。這很容易理解,也是最簡(jiǎn)單的方法。如果用戶上傳的文件內(nèi)容包含pHp代碼,這些代碼會(huì)在被文件函數(shù)加載后執(zhí)行。但是,攻擊的成功取決于上傳功能的設(shè)計(jì)。例如,您需要知道上傳文件存儲(chǔ)的物理路徑,還需要對(duì)上傳文件具有執(zhí)行權(quán)限。

包含偽協(xié)議,例如 data:// 或 php://。這需要目標(biāo)服務(wù)器支持,并且需要設(shè)置為ON。pHp5.2.0之后的版本,支持data:偽協(xié)議,方便代碼執(zhí)行。

包含文件。這部分要求攻擊者能夠控制某些文件的內(nèi)容。pHp默認(rèn)生成的文件一般存放在/tmp目錄下。

包含日志文件。例如,Web 服務(wù)器的訪問(wèn)日志文件是一種常用技術(shù)。因?yàn)閹缀跛械木W(wǎng)站都會(huì)記錄用戶的訪問(wèn)訪問(wèn)日志。因此,攻擊者可以通過(guò)文件包含漏洞將pHp代碼插入到Web日志中,并執(zhí)行Web日志中包含的pHp代碼。在以下案例中,該技術(shù)用于成功獲取目標(biāo)網(wǎng)站。但需要注意的是,如果網(wǎng)站訪問(wèn)量很大,日志文件可能會(huì)非常大。這時(shí)候如果包含這么大的文件,pHp進(jìn)程可能會(huì)卡住。一般的網(wǎng)站通常每天都會(huì)生成一個(gè)新的日志文件,所以在凌晨攻擊成功相對(duì)容易。

包含 /proc/self/ 文件。這也是一種通用技術(shù),因?yàn)樗恍枰聹y(cè)包含文件的路徑,用戶也可以控制其內(nèi)容。常見(jiàn)的方法是將pHp代碼注入U(xiǎn)ser-來(lái)完成攻擊。

使用pHp文件滲透存在漏洞的網(wǎng)站案例

上面我們?cè)敿?xì)介紹了pHp文件包含漏洞的形成和測(cè)試。下面我們通過(guò)一個(gè)真實(shí)案例來(lái)說(shuō)明如何利用pHp文件包含漏洞來(lái)滲透目標(biāo)網(wǎng)站。

目標(biāo)網(wǎng)站:中國(guó)電信業(yè)務(wù)系統(tǒng)

目的:獲取目標(biāo)網(wǎng)站的信息

詳細(xì)的滲透過(guò)程如下:

1. 發(fā)現(xiàn)漏洞

我們先打開(kāi)一個(gè)目標(biāo)網(wǎng)站的網(wǎng)址看一下,如下圖:

URL:http://XXX.vnet.mobi/index.php?path=jcb/zt/gfsdtjqg/index.html

注意path=后面的內(nèi)容。通過(guò)這個(gè)URL,可以發(fā)現(xiàn).php調(diào)用了文件函數(shù),將網(wǎng)站目錄下的文件包含進(jìn)來(lái),顯示給用戶。但目前我們不確定這個(gè) URL 是否存在文件包含漏洞。讓我們手動(dòng)測(cè)試是否存在文件包含漏洞。因?yàn)榫W(wǎng)站有一個(gè).php的測(cè)試頁(yè)面,通過(guò)這個(gè)頁(yè)面我們可以得到很多關(guān)于目標(biāo)網(wǎng)站的有用信息。不用fuzz就可以得到web目錄的絕對(duì)路徑,所以這里可以直接構(gòu)造已知文件的路徑,讓它包含php代碼執(zhí)行漏洞,快速確認(rèn)是否存在文件包含漏洞。

我們通過(guò)包含已知文件“/etc/”文件來(lái)確認(rèn)上述 URL 文件是否包含漏洞。

圖 6

從上面返回的結(jié)果可以確定該網(wǎng)站存在包含漏洞的文件。下面我們來(lái)演示一下如何利用這個(gè)漏洞進(jìn)行滲透測(cè)試。

2. 漏洞利用

通過(guò)以上測(cè)試,我們可以確定該網(wǎng)站存在文件包含漏洞。那么問(wèn)題來(lái)了,如何利用這個(gè)漏洞來(lái)達(dá)到我們的目的呢?一種思路是將后門(mén)代碼插入到網(wǎng)站的web日志文件中,利用目標(biāo)網(wǎng)站的文件包含漏洞來(lái)包含這個(gè)日志文件。這時(shí)候web日志中的后門(mén)代碼會(huì)作為pHp代碼執(zhí)行,這樣我們就可以得到一個(gè)執(zhí)行后續(xù)攻擊。但此時(shí),我們面臨著一個(gè)問(wèn)題。我們需要知道Web日志的存儲(chǔ)路徑,否則無(wú)法達(dá)到目的。通常web日志存儲(chǔ)路徑由web服務(wù)器的配置文件指定。以上獲取的信息可用于判斷目標(biāo)網(wǎng)站是否使用該服務(wù)器。所以,我們可以先通過(guò)包含web服務(wù)器配置文件(.conf)來(lái)獲取web日志存儲(chǔ)路徑。操作如下圖7所示。

圖 7

3.獲取

上面,我們通過(guò)Web服務(wù)器配置文件(.conf)獲取到了Web訪問(wèn)日志(/opt//logs/.log)的存在路徑,但是由于網(wǎng)站的日志文件很大,訪問(wèn)程序會(huì)卡在這個(gè)時(shí)候,所以我們選擇在清晨再次進(jìn)攻。因?yàn)橐话愕木W(wǎng)站每天都會(huì)生成一個(gè)訪問(wèn)日志文件,所以早上的日志文件很小,很容易成功。下面的圖 8 顯示了如何將后門(mén)代碼插入到 Web 訪問(wèn)日志中,如下所示。

圖 8

最終,我們成功獲取了目標(biāo)網(wǎng)站,如圖9所示。

圖9

pHp 文件包含漏洞預(yù)防

這部分主要從代碼層和Web服務(wù)器的安全配置兩個(gè)方面來(lái)講解pHp文件包含漏洞的防范。首先,從代碼層面來(lái)說(shuō),在開(kāi)發(fā)過(guò)程中要盡量避免動(dòng)態(tài)變量,尤其是那些用戶可以控制的。一個(gè)保險(xiǎn)的方法是使用“白名單”的方式將允許被包含的文件列出,只允許白名單中的文件被包含,這樣就可以避免任何文件被包含的風(fēng)險(xiǎn)。您可以參考下面圖 10 所示的代碼實(shí)現(xiàn)。.

圖10

另一種方法是在黑名單中定義漏洞利用過(guò)程中包含一些特殊字符的文件,并對(duì)傳入的參數(shù)進(jìn)行過(guò)濾,但有時(shí)會(huì)因?yàn)檫^(guò)濾不完整而被有經(jīng)驗(yàn)的攻擊者繞過(guò)。

在web服務(wù)器安全配置方面,可以通過(guò)設(shè)置php.ini中的值來(lái)限制特定目錄下允許包含的文件,可以有效避免利用文件包含漏洞的攻擊。需要注意的是,值是目錄的前綴,所以假設(shè)設(shè)置了以下值:=/var/www /test,那么下面的目錄其實(shí)都在允許的范圍內(nèi)。

/var/www/test
/var/www/test123
/var/www/testabc

如果要限制指定目錄,需要在末尾加上“/”,需要特別注意。

open_basedir=/var/www/test/

如果有多個(gè)目錄,下面的目錄用分號(hào)隔開(kāi),下面用冒號(hào)隔開(kāi)。

總結(jié)

以上,我們通過(guò)文字和代碼詳細(xì)分析了含有漏洞的pHp文件的形成、利用技巧和防范,并結(jié)合一個(gè)真實(shí)案例講解了如何利用含有漏洞的pHp文件對(duì)目標(biāo)網(wǎng)站進(jìn)行滲透測(cè)試,最終獲得許可。通過(guò)這些內(nèi)容,相信讀者對(duì)pHp文件包含漏洞有了深入的了解。其實(shí),只要了解漏洞的原理,對(duì)漏洞有深入的了解,加上安全意識(shí),徹底解決包含漏洞的pHp文件并不難。

新聞名稱:pHp文件包含漏洞的形成、利用技巧及防范進(jìn)行了
標(biāo)題鏈接:http://www.bm7419.com/news13/295413.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄網(wǎng)站內(nèi)鏈、搜索引擎優(yōu)化外貿(mào)建站、手機(jī)網(wǎng)站建設(shè)網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁(yè)設(shè)計(jì)