漏洞解释:
File inclusion(文件包含漏洞)是一种常见的依赖于脚本运行而影响web应用程序的漏洞,许多脚本语言支持使用包含文件(include file),这种功能允许开发者把可使用的代码插入到单个文件中,在需要的时候将他们包含在特殊功能的代码中,然后,包含文件中的代码被解释,就好像它们插入到包含指令的位置一样,当应用程序使用攻击者控制的变量建立一个可执行代码的路径,允许攻击者在运行时执行那个文件时,就会导致文件包含漏洞
漏洞分类:
本地文件包含:
本地文件包含(LFI Local File Inclusion)
有时,应用程序根据用户可控制的数据加载包含文件,但这时不可能给外部服务器上的文件指定url.例如,如果用户可控制的数据被提交给ASP函数Server.Execute,那么攻击者就可以就可以执行任意一段ASP脚本,只要这段脚本属于调用这个函数的相同应用程序
可以造成的危害:
- 访问一些通过正常途径无法访问的敏感文件
- 敏感信息泄露
远程文件包含:
远程文件包含(RFI Remote File Inclusion)
PHP语言特别容易出现文件包含漏洞,因为它的包含函数接受远程文件路径
以一个向不同位置的人传送各种内容的应用程序为例,用户选择他们的位置后,这个信息通过一个请求参数传送给服务器,代码如下:
//请求如下: //https://www.test.com/main.php?Country=US //应用程序通过以下方式处理Country参数 $country=$_GET['Country']; include($country . '.php');
这使执行环境加载位于web服务器文件系统中的US.php文件,然后,这个文件的内容被复制到main.php文件中,并得以执行.
攻击者能够以各种方式利用这种行为,最严重的情况是指定一个外部的url作为包含文件的位,php包含函数接受这个位置作为输入,接着,执行环境将获取指定的文件并执行内容.
漏洞危害:
1:web服务器的文件被外界浏览导致信息泄露
2:
脚本被任意执行所造成的影响,典型影响如下:
- 篡改网站
- 执行非法操作
- 攻击其他网站
参考链接:文件包含漏洞