文件包含漏洞的利用方法有以下這些:
上傳文件包含利用:利用包含漏洞將用戶上傳的php代碼由包含函數加載,進而實現代碼執行。條件是攻擊者需知道上傳文件的物理存放路徑,還需要對上傳文件所在目錄有執行權限。
日志文件包含利用:攻擊者可以向Web日志中插入PHP代碼,通過文件包含漏洞來執行包含在Web日志中的PHP代碼。
敏感文件包含利用:文件包含可直接讀取操作系統中的敏感文件,如當前操作系統信息、用戶名密碼信息、各類配置文件等。
臨時文件包含利用:如Session文件為例,session文件保存在服務器端,并且保存用戶敏感信息。首先找到Session文件并包含一次,可以通過插件查看當前Session值來找到文件名。
遠程文件包含利用:使用遠程文件包含功能,首先要確定PHP是否開啟遠程文件包含功能選項,需要再php.ini配置文件中修改,修改后重啟Web容器服務使其生效,可以遠程獲取服務器的信息。
文件包含漏洞的防護手段有以下這些:
文件名驗證防護:包含文件驗證是指對可保護文件名設置黑名單或白名單、文件后綴名固定等。如果需要使用文件包含,則通過使用白名單的方法對要包含的文件進行限制,這樣可以做到既使用了文件包含,又可以防止文件包含漏洞。
文件名驗證繞過防護:這防護手段主要有兩種方式一種方式是在文件后綴名處下手,另一種方式是通過目錄長度限制來截斷。嚴格限制包含中的參數,取消那些不可控的參數。
中間件安全配置防護:合理地配置中間件的安全選項也會有良好的防護效果,這主要通過調整中間件及PHP的安全配置,使得用戶在調用文件時進行基本的過濾及限制。
禁用相應函數防護:如果不需要文件包含,則關閉相應的文件包含函數,防止遠程文件包含,這是最安全的辦法。
關閉威脅配置防護:可以將PHP中的一些危險配置直接關閉,由于遠程文件的不可信任性及不確定性,在開發中直接禁止遠程文件包含選項。