路径遍历综合指南

admin 2024年12月10日13:30:37评论18 views字数 4041阅读13分28秒阅读模式

此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责。本文所提供的工具仅用于学习,禁止用于其他!!!

在我们之前的文章中,我们详细解释了本地文件包含攻击,我建议,在深入了解本节中实现的路径遍历漏洞之前,请重新阅读我们之前的文章以更好地理解。

今天,在本文中,我们将探讨最严重的漏洞之一,当开发人员未验证 Web 应用程序中的包含功能时,就会出现这种漏洞,从而允许攻击者从服务器读取和访问任何敏感文件。

介绍

路径遍历有时也称为“目录遍历”,是一种 HTTP 漏洞,允许攻击者欺骗和操纵 Web 应用程序的 URL,以访问位于应用程序根文件夹之外的文件或目录。当开发人员在其 Web 应用程序中包含图像、静态文本、代码等文件时未能建立或管理输入验证时,就会出现此漏洞。

然而,在这种攻击中,攻击者通过输入点-点-斜杠(../ 序列或类似的变体来操纵 Web 应用程序输入字段,以绕过网页并访问所需的系统文件。

因此,此漏洞被报告为“高危漏洞CVSS 评分为 7.3”

  1. CWE-22: “将路径名不正确地限制在受限目录中(‘路径遍历’)”
  2. CWE-35: “路径遍历:'…/…//'”
  3. CWE 73: “目录遍历”
  4. CWE-200: “向未经授权的行为者泄露敏感信息”

让我们检查一下这种情况,并了解攻击者如何通过获取服务器的敏感文件来破坏 Web 应用程序。

在这里,用户通过 Web 应用程序的 URL(即http://abc.com/file=index.php)调用文件 – index.php 因此,应用程序处理 URL 并调用本地存在于服务器文件夹“RAJ”中的index.php(即“ /var/www/html/RAJ”)。

路径遍历综合指南

开发人员使用“include”功能作为“file=”,目的很简单,就是管理用户选择的输入文件,这样应用程序就可以直接从本地服务器调用它。现在攻击者尝试使用点-点-斜杠序列操纵 URL,如http://abc.com/file=../../../../etc/passwd,以检索服务器密码文件的内容。

因此,应用程序将再次处理它并读取/var/www/html/RAJ/../../../../etc/passwd处的文件每个“../”代表 – 返回父目录,因此如果我们调用“../”四次,它将把我们放在“根”目录中,从那里我们可以简单地以etc/passwd 的形式访问密码文件

路径遍历综合指南

Linux 服务器 Path_Traversal 漏洞利用

现在让我们尝试在一些真实场景中实现这一点,并检查不同的攻击序列,而不仅仅是点-点-斜线。

为此,我将使用两个不同的平台:Portswigger Academy包含路径遍历漏洞的DVWA 。

基本路径遍历

登录PortSwigger 学院并下拉到目录遍历进入其实验室,选择第一个实验室作为“文件路径遍历,简单情况”,然后点击“访问实验室”按钮。

现在您将被重定向到一个电子商务网站,该网站目录中有几种产品,并且存在路径遍历漏洞。

路径遍历综合指南

进一步说,我打开了一个产品并通过简单的右键单击来查看其显示图像

现在是时候检查我们可以操纵什么了。

调整您的 burp 套件以捕获正在进行的HTTP 请求并与Repeater共享所有内容。

路径遍历综合指南
如上图的 GET 请求一样,您可以注意到 filename =67.jpg,让我们尝试使用以下命令更改此文件名
filename=../../../etc/passwd
太棒了!从下图中,你可以看到我们已经成功获取了passwd文件。
路径遍历综合指南

阻塞的遍历序列

在某些情况下,开发人员会结束遍历过程,即在这种情况下点-点-斜线或任何后续序列将不起作用。

在进入第二个实验室时,我遇到了同样的问题,即“ ../ ”序列不起作用,我无法捕获密码文件。因此,让我们尝试在 burpsuite 监视器中再次捕获此请求。

路径遍历综合指南
从下图中,您可以看到我已经获取了filename=66.jpg的请求,现在将其全部转移到Repeater
路径遍历综合指南

由于我们被“../”序列挡住了。让我们尝试输入没有任何前置值的/etc/passwd

太棒了!这招管用,我们通过直接调用获得了密码文件。

路径遍历综合指南

经过验证的路径遍历

许多开发人员会验证他们的 Web 应用程序,如果URL 中包含“../”,则会被拒绝。因此,当我们在下一个实验中尝试上述两种程序时,我们被拒绝了,没有抓取任何东西。

因此,我们在 burpsuite 中捕获HTTP 请求并将其遍历到Repeater

路径遍历综合指南
这次我们使用“双点后跟双斜杠”来操作 URL 文件名参数,即“ ...//...//...//etc/passwd”
路径遍历综合指南

太棒了!从上图可以看出,我们再次使用这种不寻常的技术捕获了密码文件。

当我们跳过4个实验室时,我们得到了这个,开发人员已经进行了验证,阻止了包含路径遍历序列的输入。

路径遍历综合指南
因此,为了绕过这个验证,我再次捕获请求并将其发送到中继器,进行一些操作。
路径遍历综合指南
从下图中你可以看到,我使用双 URL编码方法操纵了 URL 文件名参数,以便在 ASCII 到 URL 编码器转换器的帮助下将“../”转换为“..%252f”,并成功使用以下命令访问密码文件:
filename=..%252f..%252f..%252fetc/passwd
路径遍历综合指南

URL 中的路径披露

如果您知道为了捕获您想要的文件需要执行的后退步骤数,那不是很好吗?

路径泄露是一种漏洞,其中 URL 提供了其包含的文件的完整路径,从而允许攻击者简单地操纵 URL 并毫不费力地访问系统文件。

当我们进一步进入实验室5 时,我们遇到了一个为我们提供文件完整路径的应用程序。

我们只是捕获了该请求并将其发送到中继器。从下图中,你可以看到 filename 参数的值为“/var/www/images/21.jpg”。这意味着文件“21.jpg”位于images目录中,而根目录距离我们只有3 步之遥。

路径遍历综合指南

现在我们知道了进入密码文件需要执行多少后退步骤,因此我们将这样做

filename-/var/www/images/../../../etc/passwd
路径遍历综合指南

空字节旁路

许多开发人员在所需变量被包含之前,在其代码末尾添加一个“.php”扩展名。

因此,Web 服务器将/etc/passwd解释为/etc/passwd.php,因此我们无法访问该文件。为了删除这个“.php”,我们尝试使用空字节字符 (%00) 终止变量,这将强制 php 服务器在解释后立即忽略其后的所有内容。

一旦我们将捕获的请求分享到中继器,我们就会尝试消除这个空字节字符,如上所述。

路径遍历综合指南

因此,从下图中,您可以看到我们再次通过在 URL 中添加 (%00) 来捕获密码文件:

filename=../../../etc/passwd%00.jpg
路径遍历综合指南

Windows Server Path_Traversal 漏洞利用

我们不一定每次遇到在 Linux 服务器上运行的应用程序时都会遇到这种情况,因此我们可能运气不佳,只能使用 Windows 服务器。让我们了解在这种情况下可以使用的不同序列和方法。

基本路径遍历

我正在我的Windows 机器上设置DVWA 。

让我们以“admin: password”的身份启动DVWA应用程序,安全级别为“低”。然后,从左侧面板中选择漏洞为文件包含。

一旦我们选择这个,我们将被重定向到存在path_traversal 漏洞的网页。

我们通过burpsuite捕获这个请求,看看能得到什么。

路径遍历综合指南

从上图可以看出,file.php包含在page参数中。让我们将这一切分享给中继器,并尝试使用此输入字段。

为了在 Web 应用程序屏幕上调用Windows 文件,请使用以下输入来操作页面参数。

page=C:/Windows/win.ini

路径遍历综合指南

从上图可以看出,我们已成功在响应选项卡中调用该文件。现在转发此请求并在应用程序的屏幕上检查结果。

路径遍历综合指南

双点与正反斜杠

无论应用程序托管在 Linux 还是 Windows 服务器上,开发人员都会验证他们的 Web 应用程序。在这里,为了保证应用程序免受路径遍历攻击,开发人员会屏蔽一些序列,例如“../”,这样如果在 URL 中输入这些序列,就会自动被拒绝。

提高DVWA的安全级别,设置为“中”。在burpsuite上捕获请求,并将所有内容直接发送到转发器。

路径遍历综合指南

从下图中你可以看到,我们通过双点 斜杠成功绕过了这一验证,并再次获取了“win.ini ”文件:

page=…./..../..../..../..../Windows/win.ini

路径遍历综合指南

使用类似的序列,你甚至可以捕获 Windows 系统中存在的其他文件。从下图中你可以看到,我通过简单地操作 URL 参数,获取了一个标志,即fi.php ,它位于可破解文件夹中:

page=…./..../hackable/flags/fi.php

路径遍历综合指南

阻塞的遍历序列

在很多情况下,这些条件不起作用,即开发人员验证并阻止他所能验证和阻止的所有可能的序列。

让我们找到另一种可能的方法来获取“win.ini”文件,而不涉及常用的序列。

再次选择安全选项,并在DVWA应用程序中使用高安全性。返回文件包含部分并在 burpsuite 中捕获请求。

路径遍历综合指南

将 HTTP 请求共享到转发器选项卡并使用以下命令操作 URL 页面参数:

page=file://C:/Windows/win.ini

从下图中您可以看到,我们通过在 URL 参数中输入完整路径来捕获“win.ini”文件。

路径遍历综合指南

现在让我们尝试使用相同的程序来捕获标志:

page=file://C:/xampphtdocsdvwahackableflagsfi.php

太棒了!!我们也拿到了这个可破解的 flag

路径遍历综合指南

缓解步骤

  1. 开发人员应该创建一个他想要包含的所有文件的白名单,以限制攻击者的控制。
  2. 在可用的最新版本的 Web 服务器中开发或运行代码。Web 应用程序甚至应该以最小的权限实现。
  3. 排除目录分隔符“/”,以防止 Web 应用程序受到目录遍历攻击

原文始发于微信公众号(三沐数安):路径遍历综合指南

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年12月10日13:30:37
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   路径遍历综合指南https://cn-sec.com/archives/3490518.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息