Vulnerability: File Inclusion
Intruduce
File Inclusion,意思是文件包含(漏洞):
产生原因:
由于开发人员编写源码时,要将重复使用的代码插入到单个的文件中,并在需要时调用这段代码;而由于并未对代码中存在文件包含的函数入口做过滤,导致客户端可以提交恶意代码到服务器并执行。
文件包含漏洞是“代码注入”的一种,其原理就是注入一段用户能控制的脚本或代码,并让服务端执行。“代码注入”的典型代表就是文件包含,文件包含漏洞可能出现在JSP、PHP、ASP等语言中。
利用条件
若要成功利用文件包含漏洞进行攻击,需要满足以下两个条件:
Web应用采用include/require()等文件包含函数通过动态变量的方式引入需要包含的文件
用户能够控制该动态变量
本地文件包含(利用前提)
1、相关函数内的参数可控
远程文件包含(利用前提)
1、相关函数内的参数可控
2、allow_url_fopen = On
当服务器开启allow_url_include选项时,就可以通过php的某些特性函数(include(),require()和include_once(),require_once())利用url去动态包含文件,此时如果没有对文件来源进行严格审查,就会导致任意文件读取或者任意命令执行。文件包含漏洞分为本地文件包含漏洞与远程文件包含漏洞,远程文件包含漏洞是因为开启了php配置中的allow_url_fopen选项(选项开启之后,服务器允许包含一个远程的文件)。
常见利用方式
PHP包含漏洞结合上传漏洞;
PHP包含读文件;
PHP包含写文件;
PHP包含日志文件;
PHP截断包含;
PHP内置伪协议利用。






