7.2 文件包含
1. 本地文件包含
PHP文件包含漏洞的产生原因是在通过PHP的函数引入文件时,由于传入的文件名没有经过合理的校验,从而操作了预想之外的文件,就可能导致意外的文件泄露甚至恶意的代码注入。最常见的就属于本地文件包含漏洞了。 有如下代码:
if($_GET['file']){
include $_GET['file'];
}else{
include 'default.php';
}
2. 远程文件包含
远程文件包含顾名思义就是可以包含远程的文件从而造成漏洞,远程文件包含需要的条件:allow_url_fopen=On和allow_url_include=On,默认,(allow_url_fopen=On,allow_url_include=Off).包含支持http,https,ftp data,file,php://input流等。
<?php include($_GET['url']); ?>
3. 截断文件包含
测试代码:<?php include($_GET['file'].'.php');?> %00截断(需要 magic_quotes_gpc=off,PHP小于5.3有效)
当我们提交http://www.example.com/test.php?file=test.jpg%00,即可执行我们test.jpg里面的内容.
挖掘方法,我们主要通过查找include,include_once,require,require_once关键字来查找漏洞。