實戰篇——檔案包含漏洞一

yaoguyuan發表於2024-07-07

實戰篇——檔案包含漏洞(1)

本地檔案包含

本地檔案包含一般需要依賴檔案上傳漏洞。如果檔案上傳漏洞限制上傳檔案的字尾必須為.jpg,那麼配合本地檔案包含,就可以透過上傳圖片木馬獲得伺服器許可權。

上傳圖片木馬:

實戰篇——檔案包含漏洞一

利用本地檔案包含,成功連線一句話木馬:

image-20240707150207753

可見本地檔案包含最大的缺陷在於需要依賴檔案上傳漏洞,下面著重介紹不依賴檔案上傳漏洞獲得伺服器許可權的方法。

遠端檔案包含

遠端檔案包含就是利用http://偽協議包含第三方伺服器上的檔案。如果第三方伺服器可控,那麼就可以利用第三方伺服器上的一句話木馬獲得目標伺服器的許可權。遠端檔案包含的前提條件是在php.ini配置檔案中allow_url_fopen和allow_url_include必須同時開啟。

需要注意的是,利用遠端檔案包含包含的檔案字尾不能是.php,否則將因先解析後包含而無法連線一句話木馬

image-20240707151710504

image-20240707151814863

解決辦法就是將字尾改為任意非.php的字尾,這樣就可以先包含後解析

image-20240707152106228

image-20240707152147237

data://偽協議

data://偽協議檔案包含的前提條件是在php.ini配置檔案中allow_url_fopen和allow_url_include必須同時開啟。

首先準備一句話載體:

image-20240707153359690

然後對一句話載體進行base64編碼,並對末尾的+進行url編碼:

image-20240707153625210

執行,即可連線一句話木馬:

image-20240707153754134

php://input偽協議

data://偽協議檔案包含的前提條件是在php.ini配置檔案中allow_url_include必須開啟。

抓包,新增一句話載體,傳送:

image-20240707154749950

成功連線一句話木馬:

image-20240707154930683

日誌投毒:

日誌投毒就是將一句話木馬植入錯誤日誌中,透過包含錯誤日誌獲得伺服器許可權。由於日誌投毒本質上是本地檔案包含,因此對php.ini中的allow_url_fopen和allow_url_include兩項配置沒有任何要求。

日誌投毒的前提是需要知道錯誤日誌的路徑,如果存在phpinfo洩露,可以透過apache2handler中的Server Root得到apache的安裝路徑,進而得到錯誤日誌的路徑。

錯誤日誌的路徑為C:/phpStudy/PHPTutorial/Apache/logs/error.log。

image-20240707160136750

將一句話木馬嵌入路徑:

image-20240707160607690

抓包:

image-20240707160658576

可見URL已被自動URL編碼,必須將其還原,否則將無法連線一句話木馬。

將一句話木馬還原併傳送:

image-20240707160916206

成功連線一句話木馬:

image-20240707161121364

.html繞過

透過拼接.html包含檔案是一種常見的做法:

image-20240707161612643

此時將無法直接連線一句話木馬:

image-20240707161831634

第一種繞過方法是00截斷(適用於所有檔案包含方式)

image-20240707162104138

第二種方法是透過新增大量的'.'或' '實現路徑截斷(只適用於本地檔案包含和日誌投毒)

image-20240707162428927

image-20240707162540751

相關文章