路径遍历

high Web App Scanning 插件 ID 98100

简介

路径遍历

描述

Web 应用程序偶尔会使用参数值来存储服务器稍后所需的文件位置。

此问题的一个示例常见于错误页面,其中错误页面的实际文件路径存储在参数值中,例如 `example.com/error.php?page=404.php`。

参数值(即服务器调用的文件的路径)可替换为应用程序工作目录外其他资源的相对路径时,就发生路径遍历。服务器随后会加载该资源,并将其内容包含在对客户端的响应中。

网络犯罪分子会滥用此漏洞来查看本不应访问的文件。

在 *nix 服务器上,一个与此相关、非常常见的示例是获取 `/etc/passwd` 文件的访问权限以检索服务器用户列表。此攻击看起来像:`yoursite.com/error.php?page=../../../../etc/passwd`

由于路径遍历基于相对路径,因此负载必须首先遍历到文件系统的 root 目录,因此会出现字符串 `../../../../`。

扫描程序已发现,可以将参数值替换为常见操作系统文件的相对路径,并将该文件的内容包括在响应中。

解决方案

建议切勿使用不受信任的数据形成要包含的文件位置。
为了验证数据,应用程序应确保允许为文件提供的值。这可通过将参数值与允许的文件列表匹配来执行白名单来实现。如果提供的值与白名单中的任何值均不匹配,则服务器应重定向到标准错误页面。
在某些请求动态内容的情况下,可能无法对受信任资源列表执行验证,因此该列表也必须变为动态(随文件变更而更新),或执行筛选以删除无关的用户输入(例如分号、句点等),且仅允许 `a-z0-9`。
还建议您不要将敏感文件存储在 Web 根目录中,而且目录强制执行的用户权限是正确的。

另见

http://projects.webappsec.org/Path-Traversal

https://www.owasp.org/index.php/Path_Traversal

插件详情

严重性: High

ID: 98100

类型: remote

发布时间: 2017/3/31

最近更新时间: 2025/4/17

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

风险信息

VPR

风险因素: Medium

分数: 5.1

CVSS v2

风险因素: High

基本分数: 7.8

矢量: CVSS2#AV:N/AC:L/Au:N/C:C/I:N/A:N

CVSS 分数来源: Tenable

CVSS v3

风险因素: High

基本分数: 7.5

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

CVSS 分数来源: Tenable

CVSS v4

风险因素: High

Base Score: 8.7

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

CVSS 分数来源: Tenable

参考资料信息