文件包含漏洞

什麼是文件包含漏洞

PHP文件包含漏洞的產生緣由是在經過PHP的函數引入文件時,因爲傳入的文件名沒有通過合理的校驗,從而操做了預想以外的文件,就可能致使意外的文件泄露甚至惡意的代碼注入。最多見的就屬於本地文件包含(Local File Inclusion)漏洞了。php

程序開發人員通常會把重複使用的函數寫到單個文件中,須要使用某個函數時直接調用此文件,而無需再次編寫,這種文件調用的過程通常被稱爲文件包含。shell

程序開發人員通常但願代碼更靈活,因此將被包含的文件設置爲變量,用來進行動態調用,apache

但正是因爲這種靈活性,從而致使客戶端能夠調用一個惡意文件,形成文件包含漏洞。服務器

遠程文件包含漏洞的類型

1.       本地文件包含漏洞ssh

就是在網站服務器上自己存在惡意文件,而後利用本地包含使用。函數

2.       遠程文件包含漏洞測試

遠程文件包含漏洞就是調用其它網站的惡意文件進行打開網站

常見的PHP文件包含函數ui

        require:找不到被包含的文件時會產生致命錯誤,並中止腳本執行。url

        Include:找不到被包含的文件時只會產生警告,腳本將繼續執行

        Include_once:與include相似,區別就是若是該文件中的代碼已經被包含,則不會再次包含。

        Require_once:與require相似,區別就是若是該文件中的代碼已經被包含,則不會再次包含。

文件包含示例

1.       本地包含

修改ph配置文件php.ini

 

 

寫一個測試文件qswz,測試頁面正常

 

 

 

在寫一個文件包含測試頁qswz111.php

 

 

這就是一個簡單的文件包含過程

接下來,咱們把被包含的文件名改成txt文件測試

 

 

事實說明,只要文件裏面寫的是php代碼就會執行。固然,若是包含的不是php語法規則的內容則會暴露源碼。

2.       遠程包含

 

 

執行的是qswz.txt文件中的內容。

文件包含的利用

1.       讀取敏感文件

Eg: 訪問URL:localhost/qswz111.php?page=http://127.0.0.1/qswz.txt若是目標主機文件存在,而且具備相應的權限,那麼就能夠讀出文件的內容,反之會被警告。

2.       遠程包含shell

若是目標主機allow_url_fopen選項是激活的,就能夠嘗試遠程包含一句話木馬

3.     本地包含配合文件上傳

4.     PHP封裝協議

file://        訪問本地文件系統

http://       訪問HTTP(S)網址

ftp://          訪問FTP(s)URLs

php://         訪問輸入/輸出流  (I/O streams)

zlib://          壓縮流

data://         數據(RFC   2397)

ssh2://         Secure Shell 2

expect://      處理交互式的流

glob://            查找匹配的文件路徑

a.     可使用封裝協議讀取php文件

b.     可使用封裝協議寫入php文件  php://input

5.     包含apache 的日誌文件

6.     截斷包含

 

嗯,就先這麼多吧

相關文章
相關標籤/搜索