php測速代碼分清命令執(zhí)行跟代碼執(zhí)行的區(qū)別。(一)執(zhí)行php代碼轉(zhuǎn)易語言代碼執(zhí)行
2022-10-18
首先要區(qū)分命令執(zhí)行和代碼執(zhí)行的區(qū)別。
區(qū)別:命令執(zhí)行只針對系統(tǒng)命令,而遠程代碼執(zhí)行是針對編程代碼,兩者不能互相替代。
命令執(zhí)行
當(dāng)應(yīng)用程序需要調(diào)用一些外部程序來處理內(nèi)容時php測速代碼,它會使用一些執(zhí)行系統(tǒng)命令的函數(shù)。
漏洞原因:命令執(zhí)行漏洞是在源碼中直接調(diào)用了執(zhí)行系統(tǒng)命令的函數(shù),沒有做過濾,導(dǎo)致執(zhí)行命令時沒有指定絕對路徑。
比如命令執(zhí)行漏洞,權(quán)限非常大。
如:php中的函數(shù),exec函數(shù),函數(shù),函數(shù)都可以執(zhí)行系統(tǒng)命令。
() 輸出并返回結(jié)果。
exec() 不輸出結(jié)果,而是返回最后一行結(jié)果。所有結(jié)果都可以存儲在返回的數(shù)組中。
() 只調(diào)用命令,并將命令的結(jié)果直接輸出到標(biāo)準輸出設(shè)備。
(), () 不會直接返回執(zhí)行結(jié)果,而是返回一個文件指針。
下面是我用虛擬機模擬的php環(huán)境。
在調(diào)用()函數(shù)的虛擬機根目錄下寫一個php文件,參數(shù)為cmd,我們本地測試一下。
好了,可以看到我們可以通過cmd參數(shù)在虛擬機上本地執(zhí)行系統(tǒng)命令php測速代碼,這就是命令執(zhí)行漏洞的原理。
代碼執(zhí)行漏洞
應(yīng)用程序調(diào)用了一些可以將字符串轉(zhuǎn)換為代碼的函數(shù)(如php中的eval),而不考慮用戶是否控制字符串,這會導(dǎo)致代碼執(zhí)行漏洞。
php:eval()、()、()、()等。
:評估
:, 評估
: 執(zhí)行
下面還是使用php環(huán)境來演示代碼執(zhí)行:
使用 eval() 函數(shù)執(zhí)行 php 代碼,并使用變量接受 get、post 和傳遞參數(shù)。
本地測試如下:
你可以獲得php探針,這也非常有用。這里展示了最常見的。
常用詞木馬就是利用代碼執(zhí)行功能來完成操作。
文件包含漏洞
簡介:當(dāng)服務(wù)器執(zhí)行一個PHP文件時,可以通過file 函數(shù)加載另一個文件中的PHP代碼,在執(zhí)行PHP時,這將為開發(fā)者節(jié)省大量時間。該文件包含可以讀取系統(tǒng)中敏感文件、源代碼文件等的漏洞。它還可能導(dǎo)致惡意代碼執(zhí)行。
漏洞原因:包含函數(shù)的文件加載的參數(shù)沒有經(jīng)過過濾或嚴格定義,可以被用戶控制,包括其他惡意文件,導(dǎo)致執(zhí)行意外代碼。
主要包括本地文件包含和遠程文件包含兩種形式
PHP中有四種類型的文件包含函數(shù):
();
();
();
();
就是在對它執(zhí)行代碼的時候加載文件網(wǎng)站模板,只有在出錯的時候才給出警告,然后繼續(xù)執(zhí)行;
只要程序執(zhí)行完畢,就會立即調(diào)用該文件,出錯時會輸出錯誤信息,終止腳本的執(zhí)行;
一般用于文件頭包含文件、數(shù)據(jù)庫等文件,一般用于包含html模板文件;
如果讀取的內(nèi)容是php小程序開發(fā),則內(nèi)容以php執(zhí)行,如果不是php,則讀取文件內(nèi)容(用于讀取/etc/等配置文件的敏感信息)。
本地包含:
下面是我的虛擬機搭建的用于重現(xiàn)漏洞的php環(huán)境:
可以看到我們寫的代碼,直接帶入file參數(shù)的功能,不做任何過濾,我們可以控制file參數(shù)進行惡意操作。
好的,讓我們在本地測試一下。我在虛擬機c盤下新建了一個txt文件,把語句寫在里面。
可以看到,包含文件中的 php 代碼會在 php.ini 中執(zhí)行。
注意:../ 是跳轉(zhuǎn)到父目錄。./ 是當(dāng)前目錄。
然后,現(xiàn)在在E盤下新建一個txt文件,在里面寫入飛竹。
可以看出,如果不是php的內(nèi)容,可以直接讀取,那么就可以遍歷讀取其他敏感信息內(nèi)容。win&下的敏感信息路徑很多,網(wǎng)上其他大佬收集的,就不一一列舉了。嘆了口氣。
遠程包含漏洞
如果 PHP 的配置文件和設(shè)置為 ON,/etc. 函數(shù)可以加載遠程文件。如果遠程文件沒有經(jīng)過嚴格過濾,導(dǎo)致執(zhí)行惡意文件,這就是遠程文件包含漏洞。
或者使用上面寫的函數(shù)的php文件來完成這個遠程包含操作。
我在另一個虛擬服務(wù)器上的網(wǎng)站根目錄下新建了一個.txt,并寫入了read()信息。
也可以直接寫一個php后綴的文件。
好的,我們在本地測試一下,如圖:
可以看到加載成功的文件。
本文主要講解php漏洞形成的原因,方便新手學(xué)習(xí)理解。喜歡的伙伴記得加我們的訂閱號~解鎖更多技能