远程文件包含RFI漏洞有什么风险?

2019-01-1512:36:35 发表评论

远程文件包含RFI到底有什么危害呢?首先我们要知道RFI是什么?其次RFI存在于那里?然后怎么防御RFI?在这里小编给大家讲解一下。

RFI就是远程文件包含(RemoteFile Include)的英文缩写,那么远程文件包含又是何物?它就是一个对远程文件包含漏洞的详细利用。那么我们怎么去利用它,接下来就从它产生的原理到利用它批量获取PHP shell详细描述。

RFI漏洞在很久以前就已经广泛利用了,但由于很多程序员粗心大意,对包含的文件来源过滤不全,对变量减少过滤,这才导致包含的恶意的PHP文件,也就是PHP shell。RFI通过远程利用可以得到php shell,又通过本地利用读取计算机类的敏感文件。比如/etc/passwd文件(UNIX/Linux中用于存放系统账号的文件)。

很多朋友在使用include,include_once,require,require_once语句的时候,都会使用$_GET或者是其他未经过滤的变量,而这些函数的主要功能就是用来包含另一个PHP文件,也正是因为这些函数执行了我们包含的PHP文件,才会导致漏洞的发生。

RFI利用远程文件包含(Remote File Include)示范:

$page是一个变量,GET是取得一个文件提交,还有一种是使用POST提交,只要注意最后一行,倘若include()使用括号或是单引号包含了一个如上变量值或是文件,那么就可以利用了。利用形式为http://localhost/index.php?page=files.php。

RFI利用本地文件包含(Local File Include )示范:

本地文件包含就是包含计算机内的一个敏感文件,以获取我们想要的东西,如果是在Unix/Linux服务器上的话,我们就可以查看passwd或是其他一些文件的信息,如果文件权限没有设置好的话,危害甚至比远程文件包含还要大!其利用形式为http://localhost/index.php?page=../../../../../../etc/passwd。

那么下面我们就来找找RFI漏洞在哪?

既然我们已经知道产生RFI漏洞的原因了,那么为我们只需要找到include,include_once,require,require_once这些危险函数,再检测它们有没有过滤就行了,Windows下利用记事本的查找功能,在UNIX/Linux下利用grep命令来查找。还有一种简单的方法就是直接使用工具,只要使用X-xode工具,就可以对指定的文件夹查找有RFI漏洞的PHP文件,只是要使用这款工具,需要有.NET Framework支持。

找到了某些PHP程序的RFI漏洞,要获取php shell就简单了,可以使用Goo小跑堂、Goo清扫员工具演示SHOPEX的RFI漏洞批量利用,存在漏洞的文件是npsout_reply.php,主要是INC_SYSHOMEDIR变量没有过滤而造成的。Goo小跑堂的功能是替换URL参数;搜索出那么多的结果,哪个存在漏洞,可以使用Goo清扫员自动帮我们验证。

那么怎么防御RFI漏洞呢?
为了防止可能存在的远程文件包含漏洞,应该在程序的配置文件中始终禁用远程包含功能,特别是不需要这个功能的时候。还有需要将你的allow_url_include值设置为0;在将用户输入数据传递给包含函数之前进行验证。

CE安全网
CE安全网广告位招租

发表评论

您必须登录才能发表评论!