web php檔案包含(利用phpinfo)

2022-05-15 08:04:24 字數 1949 閱讀 8550

安裝:svn

命令:sudo apt-get install

subversion

那麼改為:https:

下好了以後直接

docker-compose up -d
如果出現 attributeerror: 'module' object has no attribute 'ssl_st_init' 問題:

docker 執行完命令之後,直接訪問** 8080 埠會出現 phpinfo 介面

lfi.php?file=/etc/passwd 發現存在檔案包含的

使用指令碼進行 get shell:

python2 執行:python2 exp.py 192.168.149.133 8080 10(ip 埠 執行緒)

腳本報的結果:got it! sehll created in /tmp/g

所以使用:lfi.php?file=/tmp/g&1=system('ls'); 可以執行命令了!

完全來自:https:

大佬們寫的太詳細了,一看就懂,我就不胡說八道了

在給 php 傳送 post 資料報的時候,如果資料報裡面包含檔案區塊,無論訪問的**中有沒有處理檔案上傳的邏輯,php 都會將這個檔案儲存成臨時檔案(通常是 /tmp/php[6個隨機字元]),檔名可以通過在 $_files 這個變數中找到,這個臨時檔案,在請求結束後就會被刪除

同時,因為 phpinfo 頁面會將當前請求上下文所有變數都列印出來,所以我們如果向 phpinfo 頁面傳送包含檔案區塊的資料報,則可以在返回包裡找到 $_files 變數的內容,自然也包含臨時檔名

在檔案包含找不到可利用的檔案時,即可用這種方法(為什麼我覺得這樣一把梭更舒服?),找到臨時檔名,然後包含

但是檔案包含漏洞和 phpinfo 頁面通常是兩個頁面,理論上我們需要先發資料報給 phpinfo 頁面,然後從返回頁面中匹配出臨時檔名,再將這個檔名傳送給檔案包含漏洞頁面,進行 getshell。在第乙個請求結束時,臨時檔案就被刪除了,第二個請求自然也無法包含

這時候需要用到條件競爭,具體流程如下:

1、傳送包含 webshell 的上傳資料給 phpinfo 頁面,這個頁面資料報的 header、get 等位置需要塞滿垃圾資料

2、因為 phpinfo 頁面會將所有資料都列印出來,第一步中的垃圾資料會使得 phpinfo 頁面變得非常大

3、php 預設的輸出緩衝區大小為 4096,可以理解為 php 每次返回 4096 個位元組給 socket 連線

4、我們直接操作原生 socket,每次讀取 4096 個位元組,只要讀取到的字元裡面包含臨時檔名,就立即傳送第二個資料報

5、此時,第乙個資料報的 socket 連線實際上還沒有結束,因為 php 還在繼續每次輸出 4096 個位元組,所以臨時檔案此時還沒有刪除

6、利用這個時間差,第二個資料報,也就是檔案包含漏洞的利用,即可成功包含臨時檔案,最終 getshell

檔案包含漏洞利用

一 檔案包含漏洞初步 1.原理 在通過php的相應函式 比如include request 666 引入檔案時,由於傳入的檔名沒有經過合理的校驗,從而操作了預想之外的檔案,就可能導致意外的檔案洩露甚至惡意的 注入。666 c windows system32 dirvers etc hosts 2....

PHP 包含檔案

include include once require require once include 和 require 除了處理錯誤的方式不同之外,在其他方面都是相同的 require如果引入的檔案不存在,生成乙個致命錯誤,在錯誤發生後指令碼會停止執行。include如果引入的檔案不存在,生成乙個警...

php檔案包含

小型 網頁也都得有數十個,因此關頁面的 量會很大,為了節省頻寬等諸多優化問題,要盡量實現頁面的復用 include,include once,require,require once 乙個模組可能有10來個介面 header content type text html charset utf 8 ...