1、File Inclusion文件包含(也有叫路径遍历)漏洞,严格来说,文件包含漏洞是“代码注入”的一种;
2、几乎所有脚本语言都会提供文件包含的功能,但文件包含漏洞在PHP搭建的网站中居多。该漏洞可以分为RFI(远程文件包含)和LFI(本地文件包含漏洞)两种(这里的远程和本地是站在网站服务器的立场),由于没有对包含的文件名进行有效的过滤处理,如果文件内容确为php,则会正常执行,如果不是,则会暴露源码,所以文件包含漏洞会导致任意命令执行和服务器关键信息泄露;
3、以下为实际场景实验,打开靶机页面,注意URL地址格式 http://10.13.80.42/DVWA-master/vulnerabilities/fi/?page=include.php,请注意这里的:“?=page”格式,类似的还有“?=file”、“?=home”:

4、编写文本文件,含有PHP脚本内容,保存至本地C盘根目录,文件名C:/FI_GET_INI.jpg:

5、在地址栏输入http://10.13.80.42/DVWA-master/vulnerabilities/fi/?page=C:/FI_GET_INI.jpg,图片格式文件内的脚本echo phpinfo()被执行,直接抛出服务器重要信息:

6、上面演示了File Inclusion文件包含漏洞执行恶意脚本并泄露服务器信息可能性,通常预防该漏洞常用的技巧包括:
(1) allow_url_include(PHP5.2开始默认为OFF)选项关闭(第5步返回信息中可以看到相关选项为ON状态)、
(2) 可执行脚本文件白名单限制(FI_GET_INI.jpg这个文件不在白名单内将不会被执行)、
(3) 超长字符串截断(给URL地址栏内构造文件包含路径和文件名制造麻烦,提高攻击门槛)、
(4) 防止服务器目录遍历(使用open_basedir 选现来指定一个目录,PHP将只访问该目录和该目录子目录,直接执行C盘根目录将不可能)。