什么是檔案包含漏洞
PHP檔案包含漏洞的產生原因是在通過PHP的函式引入檔案時,由于傳入的檔案名沒有經過合理的校驗,從而操作了預想之外的檔案,就可能導致意外的檔案泄露甚至惡意的代碼注入,最常見的就屬于本地檔案包含(Local File Inclusion)漏洞了,
程式開發人員一般會把重復使用的函式寫到單個檔案中,需要使用某個函式時直接呼叫此檔案,而無需再次撰寫,這種檔案呼叫的程序一般被稱為檔案包含,
程式開發人員一般希望代碼更靈活,所以將被包含的檔案設定為變數,用來進行動態呼叫,
但正是由于這種靈活性,從而導致客戶端可以呼叫一個惡意檔案,造成檔案包含漏洞,
遠程檔案包含漏洞的型別
1. 本地檔案包含漏洞
就是在網站服務器上本身存在惡意檔案,然后利用本地包含使用,
2. 遠程檔案包含漏洞
遠程檔案包含漏洞就是呼叫其它網站的惡意檔案進行打開
常見的PHP檔案包含函式
require:找不到被包含的檔案時會產生致命錯誤,并停止腳本執行,
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. 截斷包含
嗯,就先這么多吧
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/55202.html
標籤:其他
下一篇:MS17-010漏洞利用復現
