文件包含漏洞


一、文件包含介紹

程序開發人員通常會把可重復使用的函數寫到單個文件中,在使用某個函數的時候,直接調用此文件,無需再次編寫,這種調用文件的過程通常稱為包含。為了代碼靈活,開發通常把被包含的文件設置為變量,來進行動態調用,但正是由於這種靈活性,從而導致客戶端可以調用任意文件,造成文件包含漏洞。在PHP Web Application中較多。

原因:

1.Web應用實現了動態包含。

2.動態包含的文件路徑參數,客戶端可控。

危害:文件包含漏洞是非常嚴重的漏洞,如果存在就等於網站的防御措施全部失效。一般的大馬、小馬過不了安全狗,但是文件包含漏洞可以過掉安全狗。

特點:

1.無視文件擴展名讀取文件。如圖片.jpg,打開不是圖片,二是二進制碼。

2.無條件解析PHP代碼。如圖片.jpg中插入一句話木馬info.php。

 

二、PHP中四個文件包含函數

include() 文件包含失敗時,會產生警告,腳本會繼續運行。

include_once() 與include()功能相同,文件只會被包含一次。

require() 文件包含失敗時,會產生錯誤,直接結束腳本執行。

require_once() 與require()功能相同,文件只會被包含一次。

本質是將任意文件包含在上述函數的引用變量中。

 

三 、分類

1.本地文件包含:通過相對路徑的方式找到文件,然后包含。讀取和打開本地文件。

2.遠程文件包含:通過Http、Ftp、Php偽協議(php://),可以加載遠程文件。

可以通過php.ini來進行配置:

allow_url_fopen=On/Off 本地文件包含(LFI)的開關

allow_url_include=On/Off 遠程文件包含(RFI)的開關

 

四、文件包含的利用

1.讀取敏感文件。

[?path=路徑] 絕對路徑、相對路徑..\..\..\..\..\

2.直接包含圖片木馬。

[?path=圖片]

3.包含木馬寫shell。

4.訪問本地文件

[?path=file://路徑]

5.傳輸php文件

[?path=php://filter/read=convert.base64-encode/resource=文件]

然后把得到的所有字符串base64解碼即可。(獲取網站源代碼)

6.執行php命令:

通過BP抓包


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM