PHP文件包含漏洞

PHP編程語(yǔ)言中為我們提供了四個(gè)常見(jiàn)文件包含函數(shù),分別是include()?、require()?、include_once()?、require_once()?。這四個(gè)函數(shù)都可以進(jìn)行文件包含,但功能卻不一樣,

區(qū)別如下:

·include():執(zhí)行到include時(shí)才包含文件,找不到被包含文件時(shí)只會(huì)產(chǎn)生警告,腳本將繼續(xù)執(zhí)行

·require():只要程序一運(yùn)行就包含文件,找不到被包含的文件時(shí)會(huì)產(chǎn)生致命錯(cuò)誤,并停止腳本

·include_once()和require_once():若文件中代碼已被包含則不會(huì)再次包含

漏洞利用的條件:

·程序用include()等文件包含函數(shù)通過(guò)動(dòng)態(tài)變量的范式引入需要包含的文件

·用戶(hù)能夠控制該動(dòng)態(tài)變量

·要保證php.ini中allow_url_fopen和allow_url_include要為On

注:PHP中只要文件內(nèi)容符合PHP語(yǔ)法規(guī)范,包含時(shí)不管擴(kuò)展名是什么都會(huì)被PHP解析,?

?若文件內(nèi)容不符合PHP語(yǔ)法規(guī)范則會(huì)暴漏其源碼。

php.ini配置文件:allow_url_fopen=off?時(shí)不可以包含遠(yuǎn)程文件,只有開(kāi)啟了才可以包含。Php4存在遠(yuǎn)程&本地,php5僅存在本地包含。

漏洞分類(lèi)

本地文件包含:可以包含本地文件,在條件允許時(shí)甚至能執(zhí)行代碼

讀敏感文件,讀PHP文件

包含日志文件GetShell

上傳圖片馬,然后包含從而GetShell

包含/proc/self/envion文件GetShell

包含data:或php://input等偽協(xié)議

若有phpinfo則可以包含臨時(shí)文件

遠(yuǎn)程文件包含:可以直接執(zhí)行任意代碼

php協(xié)議類(lèi)型:

? file:// — 訪(fǎng)問(wèn)本地文件系統(tǒng)

? http:// — 訪(fǎng)問(wèn) HTTP(s) 網(wǎng)址

? ftp:// — 訪(fǎng)問(wèn) FTP(s) URLs

? php:// — 訪(fǎng)問(wèn)各個(gè)輸入/輸出流(I/O streams)

? zlib:// — 壓縮流

? data:// — 數(shù)據(jù)(RFC 2397)

? glob:// — 查找匹配的文件路徑模式

? phar:// — PHP 歸檔

? ssh2:// — Secure Shell 2

? rar:// — RAR

? ogg:// — 音頻流

? expect:// — 處理交互式的流

想要開(kāi)啟文件包含的功能,首先要修改PHP的配置文件(PHP.ini)把文件里的功能選項(xiàng)開(kāi)啟。

在Linux中PHP.ini配置文件一般默認(rèn)安裝在?/etc目錄下。

下面是兩個(gè)功能選項(xiàng):

allow_url_fopen?:on?默認(rèn)開(kāi)啟?該選項(xiàng)為on便是激活了?URL?形式的?fopen?封裝協(xié)議使得可以訪(fǎng)問(wèn)?URL?對(duì)象文件等。

allow_url_include:off?默認(rèn)關(guān)閉,該選項(xiàng)為on便是允許?包含URL?對(duì)象文件等

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容