File Inclusion
File Inclusion含义
意思是文件包含(漏洞),当服务器allow_url_include选项处于on状态时,通过php的特性函数(include(),require()和include_once(),require_once())利用url去动态包含文件,如果没有对文件进行审查,就会导致任意文件读取或者任意命令执行。
PHP中四个文件包含的函数区别如下:
require找不到被包含的文件时会产生致命错误,并停止脚本运行。
include找不到被包含的文件时只会产生警告,脚本将继续运行。
include_once与include类似,唯一区别是如果该文件中的代码已经被包含,则不会再次包含。
require_once与require类似,唯一区别是如果该文件中的代码已经被包含,则不会再次包含。
文件包含种类:
- 本地文件包含漏洞
- 远程文件包含漏洞
Low File Inclusion Source
<?php
// The page we wish to display
$file = $_GET[ 'page' ];
?>
分析此处代码,果然low的防御级别十分的低,根本没有对page参数进行任何的过滤。可以直接找到对应的文件路径就可以获取到文件内容。
此时如果用户点击file1.php、file2.php、file3.php,服务器会包含相应的文件然后返回其结果,但此处不论你的文件是否为php文件,它都以php文件来执行,但如果结果为真,检测到的是php文件,那么将执行结果正常返回,如果非,则原封不动打印出文件内容,所以这就是漏洞所在危害啦。
点击file1.php后,返回结果如下
点击file2.php后,返回结果如下
点击file3.php后,返回结果如下
发现3个页面除了文件的内容不同外,最大的不同就是url中page的参数不同。pag