檔案包含的小總結

2021-10-05 22:39:31 字數 3180 閱讀 4223

二. php偽協議

三. 防禦措施

通過php的函式的一些函式,比如include()引入檔案時,由於傳入的檔名沒有經過合理的校驗,從而有可能引入並操作了預想之外的檔案,就有可能導致意外的檔案洩露,甚至是**注入。

1. include()等函式通過動態變數的方式引入需要包含的檔案

2. 使用者能夠控制這個動態變數

能夠讀取或執行包含本地檔案的漏洞,稱為本地檔案包含漏洞。

比如在這段**中,使用者能夠控制引數file,當file的值為「…/…/etc/passwd\0」時。在這裡include函式救護就會暴露password檔案中的內容,造成密碼的洩露.

如果php.ini的配置選項allow_url_include為on的話,檔案包含函式是可以載入遠端檔案的,這種漏洞被稱為遠端檔案包含漏洞。利用遠端檔案包含漏洞,可以直接執行任意命令。

遠端檔案包含:包含的檔案不能是php檔案,是因為瀏覽器請求192.168.0.102/phpinfo.php,得到的是php**解析後的結果,是從遠端的伺服器進行解析的。

例如:遠端檔案包含引數是在192.168.0.102伺服器上解析的html(是不包含php**的)。而以txt檔案作為包含引數的返回內容是<?php phpinfo();?>,目標伺服器上包含的**也是這個**,目標伺服器包含的是php**,所以攻擊成功。

檔案包含的時候,無視檔案格式,只要檔案中有php**,就會被執行。

舉例:假如說檔案包含漏洞 包含的是一張,只要中包含php**就可以解析成功(馬 ---- 檔案上傳漏洞中上傳的馬)

在php中,可以造成檔案包含漏洞的函式有很多,以下幾個函式是重點關照物件:

include(),require(),include_once(),require_once()

還有一些其他對檔案進行操作的其他函式,比如fileopen,fileread等等,都有可能導致檔案包含漏洞的產生

敏感資訊洩露

獲取webshell

任意命令執行

php帶有很多內建url風格的封裝協議,可用於類似fopen()、copy()、file_exists()和filesize()的檔案系統函式。

file協議:file:///c:\windows\system32\drivers\etc\hosts

http協議:

原理:

在php開發中檔案包含漏洞常出現在include/require系列語言結構上,由於需要包含的檔案是可以被使用者設定的,從而導致包含任意檔案及**執行。通常在開發中需要設定白名單、過濾危險字元、設定檔案目錄、關閉危險配置等操作來避免漏洞的發生。

payload:

原理:

只有在allow _url_include為on的時候才可以使用,

如果想檢視回顯結果那必須在c:\php\php-5.2.14-win32下找到php-apache2handler.ini開啟,查詢display_funtions=proc-open,oppen,exec,system…….刪掉system重啟apache。

payload:

並且提交post資料為:

<?php system('net user');?>

小要點:

表單資料是你要攻擊的最終目的,可以使用burp suite抓包在repeater模組新增表單資料,也可以使用火狐外掛程式max hackbar裡的post data新增表單資料。

windows系統:

c:\boot.ini // 檢視系統版本

c:\windows\system32\inetsrv\metabase.xml // iis配置檔案

c:\windows\repair\sam // 儲存windows系統初次安裝的密碼

c:\programfiles\mysql\my.ini // mysql配置

c:\programfiles\mysql\data\mysql\user.myd // mysql root密碼

c:\windows\php.ini // php 配置資訊

linux/unix系統:當某個php檔案存在本地包含漏洞,而卻無法上傳正常檔案,這就意味這有包含漏洞卻不能拿來利用,這時攻擊者就有可能會利用apache日誌檔案來入侵。

​ apache伺服器執行後會生成兩個日誌檔案,這兩個檔案是access.log(訪問日誌)和error.log(錯誤日誌),apache的日誌檔案記錄下我們的操作,並且寫到訪問日誌檔案access.log之中

例如:這種方法只適合於magic_quotes_gpc=off的時候,在php的老版本中也是存在著一些其他的截斷問題,不過現在已經很難見到了,比如:index.php?file=info.txt//…………超過一定資料的/。

**在進行檔案包含時,如果檔名可以確定,可以設定白名單對傳入的引數進行比較。

php配置檔案中有open_basedir選項可以設定使用者需要執行的檔案目錄,如果設定目錄的話,php僅僅在該目錄內搜尋檔案

php配置中的allow_url_include選項如果開啟,php會通過include/require進行遠端檔案包含,由於遠端檔案的不可信任性及不確定性,在開發中禁止開啟此選項,php預設是關閉的。

任意檔案包含漏洞的主要出現在能夠解析處理指令碼檔案的函式上,沒有對輸入的變數進行過濾,導致任意檔案包含,進而導致惡意**執行。在開發處理這類功能函式上,一定要遵循程式設計規範;在**核心處,對變數進行過濾限制,設定檔案路徑或者白名單,避免執行任意檔案包含。

檔案包含漏洞總結

前言 檔案包含是存在的乙個很常見的漏洞,今天來總結一下對檔案包含的學習。首先說到檔案包含,那麼成因是什麼?檔案包含是指令碼檔案在引入外部檔案時引用的檔名使用者可控,且沒有對使用者名稱進行嚴格的過濾,從而導致使用者引用意外檔案,造成檔案洩露甚至 注入。0x00 分類 檔案包含分為兩種,一種時本地檔案包...

檔案包含漏洞總結

本實驗是基於dvwa和sqli labs的實驗環境 0x01 檔案包含漏洞 伺服器通過php的特性 函式 去包含任意檔案時,由於要包含的這個檔案 過濾不嚴,從而可以去包含乙個惡意檔案,而我們可以構造這個惡意檔案來達到 的目的。這也算官方的解釋吧,用個人的話說,通過瀏覽器 url位址或者是乙個引數的變...

PHP檔案包含漏洞總結

php檔案包含漏洞的產生原因是在通過php的函式引入檔案時,由於傳入的檔名沒有經過合理的校驗,從而操作了預想之外的檔案,就可能導致意外的檔案洩露甚至惡意的 注入。最常見的就屬於本地檔案包含 local file inclusion 漏洞了。我們來看下面一段index.php 1 2 3 4 5 if...