几乎所有的脚本语言都提供文件包含功能,但是php的漏洞居多,而asp,jsp的比较少,这主要是因为语言设计本身的弊端。
主要介绍php的文件包含漏洞
实际的漏洞触发点:include()函数和require()函数//这些函数可以回显打开一个或者多个文件,文本,php,cpp都能打开
漏洞分为两种:本地的和远程的。
本地的:就是include()等函数的直接使用,而且include()有时还会通过warning暴露出绝对路径(但是现在很多服务器框架都不会回显warning的内容了)
远程的(RFI):若php.ini配置中的allow_url_fopen和allow_url_include为ON,则文件包含函数是可以加载远程文件的,可以执行任意命令。具体过程是,在本地写一个脚本,然后将访问的路径改为远程路径,这一切的前提是有文件包含函数这个前提,否则借口都没有。
另外,还可通过文件上传搞事情,因为无论扩展名是什么只要符合PHP规范php解释器都会进行解析。
另外,还可包含Apache的日志文件(access.log),这个文件会记录网站的访问记录。
当访问一个不存在的资源时(也或者说明面上不允许访问),还是会记录。这样通过文件包含access.log就会间接包含所要找的文件。
ps:提交到access.log上的东西会被浏览器转码,需要抓包改一下。