DVWA-文件包含

什麼是文件包含?在文件包含裏面,我們要想方設法把真正包含的文件掉包,換成惡意文件,服務器卻不知道。

文件包含:是一種代碼處理方式,當一個代碼文件想要引用另外一個代碼文件,就要用到包含,常見的包含函數有include、require等,參數是文件名。但是如果文件包含的參數用戶可控且過濾不嚴,被攻擊者偷樑換柱。

LOW等級:

首先進行正常的操作:點擊fil1和file2時,僅僅是配置參數的變化,而其他並沒有變化,這個參數便是可以利用的。

首先進行嘗試,將這個參數隨便改成test.php,顯示找不到文件,證明這個參數是可以利用的。如圖可以看到錯誤信息,同時爆出來web的絕對路徑。

 

思考:之前的file1.php、file2.php、file3.php肯定是在一個目錄中的,而這個目錄加上這個文件名形成了絕對路徑,這個目錄我們已經在出錯信息裏面找到了,所以這個include函數如下圖所示。

進一步思考,如果我們要包含根目錄裏面的php.ini文件,就要跳轉到上兩級目錄,如下圖所示:

 

在瀏覽器中,php.ini的文件成功讀取:

 

接下來思考如何進行攻擊:

1、本地文件執行:

嘗試讀取DVWA跟目錄下面的phpinfo.php文件,如圖所示,表明了文件包含不僅僅能讀取文件,換能夠執行文件。

2、遠程文件執行:

在DVWA跟目錄下面放一個phpinfo.txt文件,然後進行遠程包含:如下圖所示,說明是可以遠程包含php文件的,而且非php的文件,只要裏面包含了php格式的代碼都可以正常執行。經過進一步嘗試遠程的phpinfo.php文件也可以執行,但兩者的區別是.txt顯示的是DVWA的域名,而.php文件顯示的是本地127.0.0.1。我們要清楚遠程的執行不是在攻擊者的web服務器上執行,而是在受害者web服務器上執行命令,所以phpinfo.txt纔是正經。

 

攻擊思路:a現在要攻擊b,攻擊者首先在a上傳有webshell代碼的文本文件,得到URL,找到b的文件包含漏洞,就成功地執行了webshell,獲得了b的web權限。

Medium等級:

1、本地文件執行:

首先進行本地包含,在這個等級,發現剛剛的../沒用了,經過測試觀察報錯信息,發現輸入../報錯信息裏面不出現,說明這個等級過濾了../,但我們可以使用..\

 

如圖所示,成功讀取

2、遠程文件包含:

接下來進行遠程包含,發現同樣被過濾了,經過不斷的判斷,觀察出錯信息,發現服務端只將http://作爲整體進行過濾,如圖所示採用雙寫的方法可成功繞過。

High等級:

1、本地文件包含:

前面兩種方法都不行,經過測試,觀察出錯信息,發現page參數只認file開頭的文件,其他的則提示找不到文件。

所以我們可以利用file 協議:在file://後面加上物理路徑即可,成功查看php.ini裏面的內容。

隨便讀取D盤下面的phpinfo.txt文件可成功執行:

遠程文件執行:前面兩種方法失效,經過驗證同樣只支持file開頭的字符串,而file協議只支持本地文件,遠程的不支持,所以就需要有一種方法將遠程的文件上傳到服務器上,所以這裏要結合文件上傳漏洞,然後進行本地文件執行。

防禦:

白名單

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章