远程文件包含***Remote File Include,它也属于是“代码注入”的一种,其原理就是注入一段用户能控制的脚本或代码,并让服务端执行。

文件包含漏洞可能出现在JSP、PHP、ASP等语言中,原理都是一样的,本文只介绍PHP文件包含漏洞。

本次实验需要使用2台Web服务器,实验环境如下:

Web1,IP地址192.168.80.129,利用NPMserv搭建php网站。

Web2,IP地址192.168.80.128,利用小旋风搭建ASP网站。

首先我们编写下图所示的一个带有文件包含漏洞的php文件:

网络安全系列之三十 远程文件包含***_第1张图片 

要想成功利用文件包含漏洞进行***,需要满足以下两个条件:

  • Web应采用include()等文件包含函数通过动态变量的方式引入需要包含的文件

  • 用户能够控制该动态变量

然后将文件放置到web1的PHP网站中,同时再在网站主目录中创建一个名为test.txt的文件,文件内容如下:

网络安全系列之三十 远程文件包含***_第2张图片 

下面在客户端访问web1网站,利用文件包含漏洞,通过test.php来打开test.txt。

网络安全系列之三十 远程文件包含***_第3张图片 

通过文件包含漏洞,不仅可以查看漏洞网站上的敏感文件,而且还可以运行远程服务器上的文件。比如我们在另一台服务器Web2上也创建一个名为rfi.txt的文件:

网络安全系列之三十 远程文件包含***_第4张图片 

然后继续在客户端访问web1网站,利用文件包含漏洞,通过test.php来打开web2上的rfi.txt。

网络安全系列之三十 远程文件包含***_第5张图片 

如果我们在web2上创建一个rfi.php文件,那么同样可以让它在web1上执行:

网络安全系列之三十 远程文件包含***_第6张图片 

网络安全系列之三十 远程文件包含***_第7张图片 

因而,如果***能够精心构造一些代码,那么远程文件包含***的威力还是比较强大的。