文件包含漏洞是一种针对依赖于脚本运行时间的 Web 应用程序的漏洞。当应用程序使用攻击者控制的变量构建可执行代码的路径时,一旦其允许攻击者控制运行时执行哪个文件,则会引发该漏洞。文件包含漏洞会破坏应用程序加载代码的执行方式。该漏洞可被利用在服务器上远程执行命令。攻击者可以把上传的静态文件或网站日志文件作为代码执行,获取服务器权限,并进一步篡改用户和交易数据,恶意删除网站等。
远程文件包含(RFI)在 Web 应用程序下载并执行远程文件时发生。这些远程文件通常以 HTTP 或 FTP URI 的形式,作为用户向 Web 应用程序提供的参数而获取。
本地文件包含(LFI)类似于远程文件包含,除了不包含远程文件外,只有本地文件(当前服务器上的文件)可以被包含用于执行。通过包含一个带有攻击者控制数据(如 Web 服务器的访问日志)的文件,仍然可以导致远程执行代码。