PHP本地檔案包含漏洞環境搭建與利用

2021-09-11 11:19:24 字數 2130 閱讀 7093

janes · 2016/03/15 13:51

php本地檔案包含漏洞相關知識,烏雲上早有相應的文章,lfi with phpinfo最早由國外大牛提出,可參考下面兩篇文章。利用的原理是利用php post上傳檔案產生臨時檔案,phpinfo()讀臨時檔案的路徑和名字,本地包含漏洞生成1句話後門。

原始碼存放在 code目錄下, 可使用docker再現,poc目錄下存放利用指令碼

向伺服器上任意php檔案post請求上傳檔案時,都會生成臨時檔案,可以直接在phpinfo頁面找到臨時檔案的路徑及名字。

php post方式上傳任意檔案,伺服器都會建立臨時檔案來儲存檔案內容。

在http協議中為了方便進行檔案傳輸,規定了一種基於表單的html檔案傳輸方法

其中要確保上傳表單的屬性是 enctype=」multipart/form-data,必須用post 參見: php file-upload.post-method

其中php引擎對enctype=」multipart/form-data」這種請求的處理過程如下:

請求到達

建立臨時檔案,並寫入上傳檔案的內容

呼叫相應php指令碼進行處理,如校驗名稱、大小等

刪除臨時檔案

php引擎會首先將檔案內容儲存到臨時檔案,然後進行相應的操作。臨時檔案的名稱是 php+隨機字元 。

在php中,有超全域性變數$_files,儲存上傳檔案的資訊,包括檔名、型別、臨時檔名、錯誤代號、大小

檔案 upload.html

#!html

複製**

得到tmp_name 路徑

複製**

說明getshell成功,之後就可以自由發揮了~~

-- [php 1="官方源" 2="2="2="2="2="language=":5.6-apache"""""\"][/php]/php5 或

-- janes/lfi_phpinfo

方式1 使用php官方源執行測試

#!bash

docker run --rm -v code/:/var/www/html -p 80:80 php:5.6-apache

複製**

方式2 使用構建好的映象 janes/lfi_phpinfo 執行測試

#!bash

docker pull "janes/lfi_phpinfo"

docker run --rm -p "80:80" janes/lfi_phpinfo

複製**

方式3 使用docker-compose

#!bash  

docker-compose up

複製**

接下來就可以使用python指令碼 getshell 了

#!bash

python lfi_phpinfo.py docker_host_ip

複製**

動手實踐 lfi with phpinfo利用的過程,其實並不像看文章過程那樣順利,期間多多少少會碰見一些與環境有關的問題,而解決這些問題會耗費精力,這正是催生我用docker來構建測試環境想法的**,希望能給網路安全的熱愛者們提供更方便的學習環境。最後感謝[lfi with phpinfo本地測試過程]文章的作者,給我研究lfi with phpinfo提供了不少幫助。

PHP本地檔案包含漏洞環境搭建與利用

php本地檔案包含漏洞相關知識,烏雲上早有相應的文章,lfi with phpinfo最早由國外大牛提出,可參考下面兩篇文章。利用的原理是利用php post上傳檔案產生臨時檔案,phpinfo 讀臨時檔案的路徑和名字,本地包含漏洞生成1句話後門。原始碼存放在 code目錄下,可使用docker再現...

檔案包含漏洞之 本地檔案包含漏洞 LFI

定義 能夠讀取或執行包含本地檔案的漏洞,稱為本地檔案包含漏洞 源 原理 為了方便,include等函式裡放的不是乙個指定檔案,而是乙個接收檔案的變數,從而造成使用者可以控制引數file改變這個變數 當引數file 的值為乙個指定路徑的檔案時,此時變數就是此路徑,include函式就會執行此檔案,當檔...

本地檔案包含漏洞(LFI漏洞)

開啟具有rfi和lfi漏洞的網頁。在下拉列表中選擇語言釋,單擊go按鈕時,所選的語言檔案將包含在url中。執行基本攻擊操作。在基本的lfi攻擊中,我們可以使用 或簡單地 從目錄中直接讀取檔案的內容,下面的截圖中在瀏覽器url中訪問密碼檔案。在一些情況下,由於高安全級別,上面提到的基本本地檔案包含攻擊...