檔案包含漏洞

2021-10-07 12:26:03 字數 1914 閱讀 2574

檔案包含:程式開發人員通常會把可重複使用的函式寫到單個檔案中,

在使用某些函式時,直接呼叫此檔案,而無須再次編寫,這

種呼叫檔案的過程一般被稱為包含。

漏洞成因:在通過動態包含的方式引入檔案時,由於傳入的檔名沒有經

過合理的校驗,從而操作了預想之外的檔案,就可以導致意外

的檔案洩露甚至惡意的**注入

檔案包含常用函式:

include()

include_once()

require()

require_once()

fopen()

readfile()

區別:

1:include和require

當包含乙個不存在的檔案時,include會報錯,但是下面的語句正常執行,

而require就會報錯並且停下腳步繼續執行

2:include_once和require——once

當之前包含過乙個檔案時,就不會再包含了

3:fopen(),readfile()

1:如果包含的檔案在程式中是直接指定的,那麼就不存在檔案包含漏洞

2:如果包含的檔案是動態的,有時候也是需要動態的區包含檔案,這個時候可能產生檔案包含漏洞

本地檔案包含漏洞:

本地檔案包含(lfi)漏洞是php中一種典型的高危漏洞。由於程式設計師未對使用者可控的變數進行輸

入檢查,導致使用者可以控制被包含的檔案,成功利用時可以使 web 伺服器將特定檔案當成php執

行,從而導致使用者可獲取一定的伺服器許可權。

注意事項:

(1)兩個檔案在同一目錄下

(2)若不在同一目錄,包含的檔案路徑必須寫相對路徑或絕對路徑

(3)被包含的頁面的字尾無論是什麼都會當作php解析

遠端檔案包含漏洞:

它其實也屬於 」**注入」 的一種,其原理就是注入一段使用者能控制

的指令碼或**,並讓其在服務端執行。

前提條件:

(1)allow_url_fopen on (預設on)

(2)allow_url_include on (預設off)

(3)被包含的變數前沒有目錄的限制

注意事項:

(1)遠端包含檔案路徑必須為絕對路徑

(2)被包含的檔案不能夠被伺服器解析,如php檔案

危害:1:配合檔案上傳漏洞getshell

2:可執行任意指令碼**

3:**原始碼檔案和配置檔案洩露

4:遠端包含getshell

file://偽協議

1)file:// — 用於訪問本地檔案系統

(2)php版本:5.0以上

(3)是 php 使用的預設封裝協議

(4)當指定了乙個相對路徑(不以/、\、\或 windows 碟符開頭的路徑)提供的路徑

將基於當前的工作目錄

php://filter偽協議

1)php://filter 偽協議用於資料流開啟時的篩選過濾應用
(2)在資料流內容讀取之前沒有機會應用其他過濾器

(3)php 版本:5.0

(4)使用方式:

php://filter/read=convert.base64-encode/resource=phpinfo.txt

php://input偽協議

(1)利用條件
allow_url_fopen 不做要求 allow_url_include = on

(2)使用版本:5.6.0 php://input 可反覆使用。

(3)利用姿勢:

post 以下資料: <?php fputs(fopen('shell.php','w'),'<?php @eval($_post[cmd])?>');?>

檔案包含漏洞

簡單的來說,就是我們用乙個可控的變數作為檔名並以檔案包含的的方式呼叫了它,漏洞就產生了。以php為例檔案包含漏洞可以分為rfi 遠端檔案包含 和lfi 本地檔案包含漏洞 兩種。而區分他們最簡單的方法就是php.ini中是否開啟了allow url include。如果開啟了可能包含遠端檔案,如果不是...

檔案包含漏洞

1 什麼是檔案包含漏洞 檔案包含,包括本地檔案包含 locao file inclusion,lfi 和遠端檔案包含 remote file inclusion,rfi 兩種形式。首先,本地檔案包含就是通過瀏覽器引進 包含 web伺服器上的檔案,這種漏洞一般發生在瀏覽器包含檔案時沒有進行嚴格的過濾,...

檔案包含漏洞

直接執行 的函式 eval assert system exec shell exec passthru escapeshellcmd pcntl exec 等就不一一舉例了。1 eval eval 函式把字串按照 php 來計算,如常見的一句話後門程式 eval post cmd 2 assert...