📜  防止目录遍历漏洞

📅  最后修改于: 2022-05-13 01:56:12.010000             🧑  作者: Mango

防止目录遍历漏洞

目录遍历是一个漏洞,允许攻击者访问存在于根目录之外或该 Web 服务器主目录之外的文件。根目录有一些用户无法访问的内部文件。此漏洞可以在 Web 服务器或 Web 应用程序代码中找到。这种类型的攻击也称为路径遍历攻击

通过测试接受用户输入、HTTP 请求、表单和 cookie 的网站的所有部分,可以发现目录遍历漏洞。攻击者使用带有两个点 (cd..) 的 cd 命令将其更改为其父目录。通过直接在URL中的文件路径中添加../,我们可以尝试将其更改为更高的目录来查看系统文件。

攻击者可以访问的一些系统文件:

对于基于 Unix 的操作系统:

  • /etc/passwd 文件:包含有关所有用户帐户的信息
  • /etc/group 文件:包含用户所属的组
  • /etc/profile 文件:包含用户的默认变量
  • /proc/self/environ 文件:包含某些环境变量
  • /etc/issue 文件:包含登录前要显示的消息
  • /proc/version 文件:包含正在使用的 Linux 内核版本
  • /proc/cpuinfo 文件:包含处理器信息

对于 Windows 操作系统:

  • C:\Windows\修复\系统
  • C:\Windows\修复\SAM
  • C:\Windows\win.ini
  • C:\boot.ini
  • C:\Windows\system32\config\AppEvent.Evt

目录遍历攻击示例:
易受攻击的PHP代码的典型示例是:

PHP


下面给出了一个 URL,它具有作为 GET 方法请求的包含函数

http://192.168.29.23/dvwa/vulnerabilities/fi/?page=include.php

使用目录遍历攻击,攻击者可以将 ../ 直接附加到 URL 中的文件路径

http://192.168.29.23/dvwa/vulnerabilities/fi/?page=../../../../../../etc/passwd

防止目录遍历攻击:

  • 为防止 Web 服务器中的目录遍历,请始终更新您的 Web 服务器和操作系统。
  • 网站应在处理用户输入之前对其进行验证,以防止目录遍历攻击。
  • 授予非超级用户的权限对于它需要运行的文件应该是只读的。不应允许非超级用户写入或修改任何文件。
  • 当对目录或文件发出任何 URL 请求时,规范化所有字符。例如,所有 %20 都应转换为空格。
  • 始终从与系统磁盘不同的磁盘运行 Web 服务器,因为系统磁盘包含敏感信息。
  • 如果您需要从用户那里获取文件名,请确保它被有效字符正确扫描。