简述
程序开发人员一般会把重复使用的函数写到单个文件中,需要使用某个函数时直接调用此文件,而无需再次编写,这中文件调用的过程一般被称为文件包含。
程序开发人员一般希望代码更灵活,所以将被包含的文件设置为变量,用来进行动态调用,但正是由于这种灵活性,从而导致客户端可以调用一个恶意文件,造成文件包含漏洞。
几乎所有脚本语言都会提供文件包含的功能,但文件包含漏洞在PHP Web Application中居多,而在JSP、ASP、ASP.NET程序中却非常少,甚至没有,这是有些语言设计的弊端。
在PHP中经常出现包含漏洞,但这并不意味这其他语言不存在。
危害
-
执行任意代码。
-
读取文件源码或敏感信息。
-
包含恶意文件控制网站。
-
甚至控制服务器。
分类
本地文件包含和远程文件包含。
本地文件包含是指只能包含本机文件的文件包含漏洞。
远程文件包含是指可以包含远程文件的包含漏洞,远程文件包含漏洞需要设置allow_url_include = on。
PHP文件包含常见函数
-
include()
-
include_once()
-
require()
-
require_once()
注意:include()和includ