目录穿越漏洞

简介

目录穿越(也被称为目录遍历)是通过使用../等目录控制序列或者文件的绝对路径来访问存储在文件系统上的任意文件和目录,特别是应用程序源代码、配置文件、重要的系统文件等。

路径穿越是网站被恶意人员利用,来得到其无权限访问的内容。

通常是由于代码没有判断拼接路径的真实路径是否合法,最终导致文件读取。

一般来讲用户在网站进行浏览,所能见到的网页都是位于网站根目录下的文件,根目录以外的文件是不允许被未授权访问的。但是安全方面做得不严谨的web程序可能会出现目录穿越漏洞,恶意人员可以利用这个漏洞来读取根目录以外的文件夹。一旦成功,本不应该暴露的敏感信息就可能被泄漏给恶意人员。

攻击payload

1.URL参数

  • ··/
  • ..\
  • ..;/

2.Nginx off by slash

  • https://vuln.site.com/files../

3. UNC Bypass

  • https://localhost/c$/windows/win.ini

4.过滤绕过

  • 单次替换,如..//
  • URL编码
  • 16位Unicode编码
  • 超长UTF-8编码

防御

方案一:过滤恶意字符,如.../.\

缺点:黑名单过滤不全的话,很容易被绕过。

方案二:采用白名单方式,只允许读取特定文件,若不是特定文件直接拦截。也可以仅允许纯字母或数字字符等。

方案三:按照.分割,读文件名参数和文件格式参数,如果文件名参数中有..,则拦截

附录:UNC路径

  • UNC(Universal Naming Convention)
  • 为了迎合网络化的趋势,windows的地址风格(C:\ABC\def\文件\\计算机名\dir\file)向网络地址风格做了一次兼容变换。
  • 整体形式如:file://机器的IP地址/目录/文件
    • file表示协议类型
    • :// 后面是机器的网络地址
    • /后面是目录和文件名
  • 我们访问网上邻居所采用的命令行访问法,实际上应该称作UNC路径访问法。

热门相关:无量真仙