全部产品

文件包含漏洞

更新时间:2017-11-29 20:51:06

漏洞描述

文件包含漏洞是一种针对依赖于脚本运行时间的 Web 应用程序的漏洞。当应用程序使用攻击者控制的变量构建可执行代码的路径时,一旦其允许攻击者控制运行时执行哪个文件,则会引发该漏洞。文件包含漏洞会破坏应用程序加载代码的执行方式。

远程文件包含(RFI)在 Web 应用程序下载并执行远程文件时发生。这些远程文件通常以 HTTP 或 FTP URI 的形式,作为用户向 Web 应用程序提供的参数而获取。

本地文件包含(LFI)类似于远程文件包含,除了不包含远程文件外,只有本地文件(当前服务器上的文件)可以被包含用于执行。通过包含一个带有攻击者控制数据(如 Web 服务器的访问日志)的文件,仍然可以导致远程执行代码。

漏洞危害

该漏洞可被利用在服务器上远程执行命令。攻击者可以把上传的静态文件或网站日志文件作为代码执行,获取服务器权限,并进一步篡改用户和交易数据,恶意删除网站等。

修复方案

  • 严格检查变量是否已经初始化。

    建议您假定所有输入都是可疑的,尝试对所有提交的输入中可能包含的文件地址(包括服务器本地文件及远程文件)进行严格的检查,参数中不允许出现 ../ 之类的目录跳转符。

  • 严格检查 include 类的文件包含函数中的参数是否外界可控。

  • 不要仅仅在客户端做数据的验证与过滤,将关键的过滤步骤放在服务端执行。

  • 在发布应用程序前,测试所有已知的威胁。