文件包含漏洞是一种常见于基于PHP的网站的漏洞,用于影响 Web 应用程序。当应用程序尝试从特定服务器获取某些信息时,通常会发生此问题,而用于获取特定文件位置的输入不被视为可信来源。
它通常是指包含攻击,其中攻击者可以提供有效输入以从 Web 服务器获得响应。作为回应,攻击者将能够判断他提供的输入是否有效。如果它是有效的,那么攻击者想要查看的任何/任何文件都可以轻松访问它。
下面的例子说明了 LFI 漏洞的工作过程:
本地文件包含工作:让我们通过以下示例了解本地文件包含的工作:
在上面的例子中"$file = $_GET['page'];"
$file只是一个文件/代码,用于指示PHP代码将返回一个“文件”作为响应。 $_GET
是一组指令,它将从 Web 服务器获取特定文件或网页,即它将请求文件。 ['page']
是一个参数,它将定义响应中将显示什么类型的页面。
本地 LFI 在哪里找到?
基本上这个位置
http://vulnerable_host/preview.php?file=abc.html
这是攻击者可以对 Web 应用程序执行 LFI 攻击的地方。该脚本可以包含在 URL 中,该 URL 包含将执行攻击的各种参数。可以在服务器上包含任意文件。攻击者受影响的 URL 如下所示:
http://vulnerable_host/preview.php?document=../../../../etc/passwd
识别 Web 应用程序中的漏洞:识别Web 应用程序中的LFI 漏洞很容易,因为它会包含来自 Web 服务器的文件并将其返回给攻击者。
例如“/fi/?page=include。如果上述示例或与此类示例相关的内容存在于 Web 应用程序中,则PHP” LFI 在此类应用程序中是可能的。
Pentester 会试图从这种错误配置中获益,即他可以通过操纵参数来利用这个漏洞。
例如“/fi/?page=include。 php ” 只有当PHP才会成功执行。 PHP”文件存在于同一目录中。如果没有,我们必须在“index.html”之前添加“../”。 PHP”。
想象一下这个“索引。 PHP”位于"/var/www/html"
文件夹和“ "/var/www/html"
。 PHP”位于"/var/www/dvwa/vulnerabilities/lfi/"
文件夹中,您只能从该文件夹位置看到文件的响应。现在要执行位于另一个目录中的文件,我们必须更改 URL 中的目录。例如"/fi/?page=../../../index.php"
。
LFI攻击可能存在三种情况:
- 包括要由语言解释器解析的文件
- 包括打印到页面的文件
- 包括用作下载的文件
本地文件包含漏洞的影响:攻击者可以利用 LFI 漏洞访问以下内容:
- 存储在 Web Server 中的文件的信息披露
- 密码/数据库访问
- 日志文件
- 完整的系统妥协
修复文件包含 (LFI) 漏洞:
- 不应允许可以直接修改的文件路径,要么硬编码,要么通过硬编码路径列表选择。
- 必须确保所需的应该具有动态路径连接,即必须包含 (az) (0-9) 而不是 (/, /% etc)
- 应该对 API 进行特定限制,以便仅包含来自其下的目录的工作,以便在这种情况下不会发生目录遍历攻击