遠端檔案包漏洞,不能包含PHP的原因詳解

2021-10-03 14:34:12 字數 2874 閱讀 6106

簡介:進行遠端包含時,大多數包含txt、jpg等檔案,再進行菜刀連線,但是如果遠端包含的是php檔案,則菜刀無法成功連線。

開門見山,給我帶來啟發的兩句話

注意:如果是包含遠端伺服器上的php檔案,那麼得到的是被遠端伺服器解析過的php,所以在寫一句話木馬的時候就不要做成.php的檔案,一般包含.txt的檔案

例如:我們用windows server 2003 伺服器包含乙個linux上的phpinfo.php檔案,那麼得到的就是linux的php配置檔案,而不是windows上的php配置檔案。

(參考:

下面是一些推斷驗證:

驗證:現有兩個靶機環境,都上傳乙個php檔案檢視phpinfo()資訊,進行對比

靶機1:

靶機2:

可以發現2個靶機的php版本資訊是不一樣的

現在通過靶機1遠端包含靶機2的php檔案

可以發現該php版本資訊,為包含的遠端檔案上的伺服器的php版本資訊,即靶機2的php版本資訊

證實了包含遠端php檔案時,會在伺服器上進行php解析後,再傳給包含該遠端php檔案的伺服器上

由於post提交值不太方便,這裡我們改用get方式

首先上傳乙個test.php檔案,

檔案內容:

<?php 

echo

"123"

;$name

=$_get

['abc'];

echo

"----------------";

echo

$name

;echo

"----------------";

?>

並在example1.php中新增了乙個echo nam

e,驗證

name,驗證

name,驗

證name的值

如果直接對這個上傳檔案進行正常訪問,結果也顯示正常,如下圖:

將該檔案進行包含

url:

**注意:**這裡的abc前是用&符連線,表示該值是傳遞給example1.php的

說明example1.php中的壓根沒有接收到abc這個引數

如果我們這樣測試

url:

**注意:**abc前是?這樣就表示這個abc引數是傳給test.php的

可以發現test.php中的echo $name;進行了正常輸出,說明test.php中是接收到了abc引數的值,而example1.php中的echo nam

e;依然

沒有正常

輸出,報

了不存在

name; 依然沒有正常輸出,報了不存在

name;依

然沒有正

常輸出,

報了不存

在name

通過以上兩點,可以說明,包含test.php時,先進行test.php解析,

通過$name = get

[′ab

c′]獲

得了ab

c的值並

且這個_get['abc']獲得了abc的值 並且這個

g​et[′

abc′

]獲得了

abc的

值並且這

個name就相當於乙個存在於test.php的內部變數,當被example1.php包含時,example1.php壓根看不到$name的值,推斷出遠端包含時解析了test.php後,將解析的結果傳給了example1.php中,而不是將test.php的**傳給example1.php中

如果我們包含的是test.txt(與test.php中內容相同)又是怎麼樣的情況

url:

注意這裡是&abc

說明這是把test.txt中的**傳給了example1.php中,然後再對example1.php進行解析

url:

注意這裡是?abc

這裡的報錯與我們所想的一致,因為test.txt還未包含時,不會被解析,就無法獲取引數abc的值

總結:當伺服器a遠端包含伺服器b的php檔案時,遠端伺服器b會先對php進行解析,解析後的結果再傳給a,而當伺服器a遠端包含伺服器b非指令碼檔案(比如txt,jpg)時,b會將檔案內容(因為是非指令碼,b自然不會進行解析)傳給a,a包含b傳來的檔案內容後,再進行解析,而解析過程中又發現b傳來的檔案內容是php檔案格式,於是會進行php。

PHP檔案包含漏洞

php的檔案包含可以直接執行包含檔案的 包含的檔案格式是不受限制的。檔案包含分為本地文字包含 local file include 和遠端檔案包含 remote file include 檔案包含函式有 include include once require 和require once 它們之間的...

PHPList遠端檔案包含漏洞

影響版本 phplist 2.6.2 漏洞描述 phplist是一款由php編寫的時事通訊應用程式。phplist由於不充分過濾使用者提交的請求,遠端攻擊者可以利用這個漏洞包含遠端伺服器上的惡意php檔案,以web許可權執行。michiel dethmers secfoc kipu.co.uk se...

PHP檔案包含漏洞總結

php檔案包含漏洞的產生原因是在通過php的函式引入檔案時,由於傳入的檔名沒有經過合理的校驗,從而操作了預想之外的檔案,就可能導致意外的檔案洩露甚至惡意的 注入。最常見的就屬於本地檔案包含 local file inclusion 漏洞了。我們來看下面一段index.php 1 2 3 4 5 if...