📜  什么是目录遍历攻击?(1)

📅  最后修改于: 2023-12-03 14:49:13.462000             🧑  作者: Mango

目录遍历攻击

简介

目录遍历攻击(Directory Traversal Attack)是一种常见的Web攻击方式之一,攻击者通过特定的输入方式绕过程序限制,访问到未授权的文件目录,以达到获取敏感信息、提权等目的。

原理

目录遍历攻击的原理是利用程序对路径输入的解析方式,通过“../”等路径符号进行路径跳转,从而绕过程序对访问路径的限制。例如,对于以下代码样例:

path = "/var/www/html/" + request.GET.get("file", "")
f = open(path, "r")

如果用户传入的file参数值为“../../../etc/passwd”,那么实际上程序会打开的是“/etc/passwd”文件,因为“../”表示返回上层目录。

攻击场景

目录遍历攻击的场景非常广泛,任何需要处理文件路径的Web应用程序都可能受到攻击,例如:

  • 文件下载功能:攻击者可通过构造特定的文件路径下载未授权的文件,包括配置文件、源码文件等敏感文件。
  • 文件读取功能:攻击者可通过读取未授权的文件获取系统重要信息,例如/etc/passwd文件中存储着所有系统用户信息。
  • 文件上传功能:攻击者可通过恶意上传文件覆盖系统文件,从而达到提权的目的。
防范措施

为了防范目录遍历攻击,我们可以采用一些常见的防御措施:

  • 输入过滤:对传入的输入参数进行过滤,只允许特定的字符出现,例如只允许数字、字母及下划线等。
  • 路径检测:对文件路径进行检测,拦截其中包含非法字符或路径跳转符号“../”等。
  • 绝对路径:使用绝对路径代替相对路径,从而避免路径跳转的风险。
  • 权限控制:为文件和目录设置合理的权限,如不允许网站程序有写入权限,从而在可能被攻击时减轻攻击程度。
参考资料